2011-01-26 4 views
3

例として、acceptsは関数名を引数として受け取り、コード内のそのポイントから正常に呼び出すことができるかどうかをチェックする関数is_callable()を使用しましょう。メソッドを配列として参照する方法と文字列を参照する方法の違いは何ですか?

私は、オブジェクトのメソッドを呼び出し可能であるかどうかを確認したい場合は、静的メソッドを参照するときに、私は2つの選択肢がありますように、それはそう:

オプション1:

is_callable(array("ObjectName", "MethodName")); 

はオプション2:

is_callable("ObjectName::MethodName"); 

(インスタンスメソッドは、オプション1を使用してチェックされているに過ぎず、オブジェクトインスタンスをクラス名を含む文字列ではなく最初の配列値として渡すことができます)

これは単なる好みの問題か、構文的な砂糖ですか、それとも2つの違いがありますか?

+3

砂糖に投票。 – zerkms

答えて

7

これは単なる構文糖です。is_callable("ObjectName::MethodName")はもっとよく見えますが、配列メソッドよりも高いPHPバージョンが必要です。しかし

、あなた必見使用array($instance, 'MethodName')インスタンス方法への「ポインタ」を作成します。

PHP docsから:

// Type 4: Static class method call (As of PHP 5.2.3) 
call_user_func('MyClass::myCallbackMethod'); 
+0

私はそれほど気にしましたが、それを確認させていただきありがとうございます。ありがとう。 – AgentConundrum

関連する問題