2012-10-14 1 views
9

と呼ばれる方法で、私はこのようになり、簡便法を、持っていますこのようなcall_user_func_array()、:はcall_user_func_array

call_user_func_array(array("Foo", "bar"), array('id' => 1)); 

べきが等しいことが、私は次のエラーを取得する:

Fatal error: Using $this when not in object context in

$thisが定義されていない)

これはなぜですか?私が紛失しているものはありますか?呼び出されたメソッドでまだ$thisを使用できるようにするにはどうすればよいですか?

答えて

14

array("Foo", "bar")、すなわち静的メソッドFoo::bar()に等しい - $fooはどこにも使用され、従って、PHP であるので、これは理にかなってを使用するインスタンスを知ることができません。

array($foo, "bar")は、インスタンスメソッドを呼び出すことです。

さまざまな呼び出し可能ファイルのリストについては、http://php.net/manual/en/language.types.callable.phpを参照してください。あなたはまた、代わりに連想配列のインデックス付き配列として引数を渡す必要があり


は、すなわちarray(1)代わりarray('id' => 1)

+0

の念のために自分のコードでは第二の間違い、 '配列( 'idがあります'=> 1) 'barの定義で判断すると' array(1) 'になるはず – Mahn

+0

ハ!それが来ているのを見て、それは簡単だとは思わなかった。ありがとう、トン!あなたの編集に関して:それはタイプミスです、そのコードをSO-askウィンドウに書きました:-)。再度、感謝します! – Zar

関連する問題