is_callable
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
is_callable — 引数が、関数としてコール可能な構造であるかどうかを調べる
説明
is_callable
( mixed $var
[, bool $syntax_only
= false
[, string &$callable_name
]] ) : bool
引数の内容が、callable かどうかを調べます。
パラメータ
var
- チェックする値。
syntax_only
true
の場合、この関数は単にvar
が関数またはメソッドであるかどうかだけを調べます。 文字列以外の型の変数や不正な形式の配列は、 引数として受け付けられません。有効な配列の形式は、 最初のエントリがオブジェクトあるいは文字列で、2 番目のエントリが文字列である 2 つのエントリからなるものです。callable_name
- "呼び出し名" を受け取ります。下の例では "someClass::someMethod" です。これは someClass::SomeMethod() が static メソッドであるかのようにみえますが、 そうではないことに注意しましょう。
返り値
var
がコール可能な場合に true
、
それ以外の場合に false
を返します。
例
例1 is_callable() の例
<?php// 変数が、関数としてコール可能かどうかを確かめます。//// 関数名を含む単純な配列//function someFunction() {}$functionVariable = 'someFunction';var_dump(is_callable($functionVariable, false, $callable_name)); // bool(true)echo $callable_name, "\n"; // someFunction//// メソッドを含む配列//class someClass { function someMethod() { }}$anObject = new someClass();$methodVariable = array($anObject, 'someMethod');var_dump(is_callable($methodVariable, true, $callable_name)); // bool(true)echo $callable_name, "\n"; // someClass::someMethod?>
例2 is_callable() とコンストラクタ
PHP 5.3.0 以降は、is_callable()
はコンストラクタを callable だとはみなさなくなりました。
これは、PHP 5 以降の形式のコンストラクタ
(__construct
) であっても PHP 4 形式のコンストラクタ
(クラスと同じ名前のメソッド) であっても同じです。
PHP 5.3.0 より前のバージョンでは、これらはいずれも callable だとみなされていました。
<?phpclass Foo{ public function __construct() {} public function foo() {}}var_dump( is_callable(array('Foo', '__construct')), is_callable(array('Foo', 'foo')));
上の例の出力は以下となります。
bool(false) bool(false)