
いつもお世話になっています。
PHPの勉強を始めた初心者です。
is_callable()の第二引数の使い方がよく分りません。
true に設定すると、$name が文字列型である場合には、常に bool(true)を返します。
どういう時に、役に立つのでしょうか?
お教えいただければ幸いです。
<?php
// http://php.net/manual/ja/function.is-callable.php:
/*
bool is_callable ( callback $name [, bool $syntax_only = false [, string &$callable_name ]] )
syntax_only
TRUE の場合、この関数は単に name が関数またはメソッドであるかどうかだけを調べます。
文字列以外の型の変数や不正な形式の配列は、引数として受け付けられません。
*/
class someClass {
function someMethod() {
print "hello from someMethod\n";
}
}
$varInt = 1;
$varString = "string";
$varObject = new someClass();
$varMethod = array($varObject, 'someMethod');
var_dump(is_callable($varInt, true)); // bool(false)
var_dump(is_callable($varInt, false)); // bool(false)
var_dump(is_callable($varString, true)); // bool(true)
var_dump(is_callable($varString, false)); // bool(false)
var_dump(is_callable($varMethod, true)); // bool(true)
var_dump(is_callable($varMethod, false)); // bool(true)
$varObject->someMethod();
[study_php@localhost ch05]$ php is_callable_Test.php
bool(false)
bool(false)
bool(true)
bool(false)
bool(true)
bool(true)
hello from someMethod
[study_php@localhost ch05]$
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
PHP のソースアーカイブに zend_API.c というファイルがあります。
ここに実際の処理内容が記述されていますので、こちらをご覧になるとよいでしょう。当たり前の回答になりますが、速度に違いが出るので確認対象の数が多いときに使うのだと思います。
それ以外では、第3引数で呼び出し名を受け取る変数を設定したいとき、端折れないので false と書くぐらいでしょうか。こちらは HTML_QuickForm2_Rule_Callback クラス定義中の記述で確認できます。
ここを true で呼び出している例は、見つけることが出来ませんでした。
No.2
- 回答日時:
すみません、説明不足でした。
is_callableの第二引数をtrueにする使い方に対して、
先に挙げた関数などもあるので、
「意識して使う必要もあまり無い気がします」
ということが言いたかっただけでした。
第二引数をfalseにしての使い道は、質問者さんも分かってらっしゃると思います。
No.1
- 回答日時:
マニュアルに、シンタックスのみを見る、と書いてあるとおり、
array('文字列', '文字列')
'文字列'
array('オブジェクト', '文字列')
という形式になっているものは全部通しますね。(でも'1'とかしても通るのはちょっとダメなんじゃないかとは思います)
呼び出し可能かを調べる方法としては、
function_exists
method_exists
class_exists
など、他のものもあるので、意識して使う必要もあまり無い気がします。
今のところ何に使うかはパッと思いつきませんが、とりあえず知ってさえいれば、
それを使わなくてはならないような何らかの案件があったときに、使えるのではないでしょうか。
この回答への補足
回答ありがとうございます。
>呼び出し可能かを調べる方法としては、
>method_exists
method_exists() だと、private や protected なメソッドを引数に渡したときも bool(true) を返してしまうので、callback を行う際に、そのメソッドが callable であるかどうかのチェックが出来ないのではないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 正規表現について質問です。条件に合う場合はtrueを返したい 3 2022/10/06 23:02
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- C言語・C++・C# 競技プログラミングに関する質問です。 3 2022/04/03 19:51
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPにおいて16進数のアスキー文...
-
ローカル環境でのメール送信
-
トランザクションが原因?DBに...
-
JSPにてMySQLのBLOB型の画像の...
-
PHPのsafemodeとは?
-
ユーザー認証でユーザーID毎に...
-
【file_exists】ファイルが存在...
-
URLの変わらないページをPHPで...
-
フォームで戻った際に入力済み...
-
PHPファイルの中身が見られるこ...
-
VBSの「MsgBox」について
-
FORMで送信ボタンと戻るボタン...
-
FTPコマンドでディレクトリごと...
-
ボタンのクリック数を合計保存...
-
別サーバのプログラムを起動
-
日本語をGETで渡す場合UR...
-
PHPのif文でその処理を途中で抜...
-
php経由のMySQL
-
Subversionのリポジトリの削除
-
C# Excelファイルへの画像挿入。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php文字列中のシングルクオート...
-
getでurl
-
php→JavaScript間の変数受け渡し
-
PHPにおいて、配列データをMySQ...
-
is_callable()の第二引数の使い方
-
PHPでカンマ区切り文字列を数値...
-
PHPのGETとPOSTの処理を学習中...
-
ある文字列の最後の2桁で分解...
-
文字列を大文字の2桁ごとのコン...
-
PHP,Perl の正規表現で”ー"...
-
php 言語について
-
文字列を%+2桁のヘキサ
-
urldecodeについて
-
PHPで4桁の文字コード(SHIFTJI...
-
PHP4から5への移行に伴うFatal ...
-
blob型のデータの変換について
-
【比較演算子】偶数・奇数識別...
-
リダイレクトできません。クエ...
-
秀丸エディタのハイライト(mar...
-
phpでの単語数
おすすめ情報