3

http://php.net/manual/en/functions.anonymous.phpによると、関数が存在するコンテキストで定義されていても、PHP 5.3$thisは暗黙的な関数内からアクセスできません$this。この制限を回避する方法はありますか? (ちなみに、ウェブサーバー上の PHP インストールをアップグレードすることはできません)

暗黙的な関数を使用したい方法は、オブジェクトのメンバー関数であるコールバックを定義することです。より正確には、次のようなことをしたいと思います

$callback = function() { return $this->my_callback(); }

実際、イベントのより良い構文は次のようになります

$callback = $this->my_callback

しかし、私はそれを機能させることはできません (コールバックを実行しようとすると、PHP は「致命的なエラー: 関数名は文字列でなければなりません」で終了します)。

4

3 に答える 3

4

次の作業を行う必要があります。

$object = $this ;
$callback = function() use ($object) { return $object->my_callback(); } ;

useは、関数スコープへの宣言時にアクセス可能な変数 (この場合はオブジェクトの参照) をもたらすため、パラメーターとして送信する必要はありません。

$selfより明確にするために、そのようなvarnameを使用する方が良い場合もあります$that

于 2013-06-25T21:10:08.667 に答える
1
$function = array($this, 'my_callback');

(たぶん併用call_user_func())

于 2013-06-25T21:05:49.610 に答える