
クラス メソッドをコールバックとして渡す方法
背景
シナリオによっては、効率を高めるために、クラス メソッドをコールバックとして他の関数に渡す必要がある場合があります。特定のタスクの実行。この記事では、これを実現するためのさまざまなメカニズムについて説明します。
呼び出し可能な構文の使用
関数をコールバックとして渡すには、その名前を文字列として直接指定できます。ただし、このメソッドはクラス メソッドには適用できません。
インスタンス メソッドの受け渡し
クラス インスタンス メソッドは、オブジェクトを最初の要素、メソッド名を要素とする配列を使用してコールバックとして渡すことができます。 2番。このアプローチは、同じクラスの内部と外部の両方で機能します。
1 2 3 4 5 6 7 | <code class = "php" >
$this ->processSomething([ $this , 'myCallback' ]);
$this ->processSomething([ $this , 'myStaticCallback' ]);
$myObject ->processSomething([ new MyClass(), 'myCallback' ]);
$myObject ->processSomething([ new MyClass(), 'myStaticCallback' ]);</code>
|
ログイン後にコピー
静的クラス メソッドの受け渡し
静的クラス メソッドにはオブジェクト インスタンスは必要ありません。これらは、クラス名とメソッド名を含む配列として直接渡すことができます。
1 2 3 4 5 6 7 | <code class = "php" >
$this ->processSomething([ __CLASS__ , 'myStaticCallback' ]);
$myObject ->processSomething([ '\Namespace\MyClass' , 'myStaticCallback' ]);
$myObject ->processSomething([ '\Namespace\MyClass::myStaticCallback' ]);
$myObject ->processSomething([MyClass:: class , 'myStaticCallback' ]);
|
ログイン後にコピー
追加オプション
上記のメソッドとは別に、匿名関数をコールバックとして渡すこともできます。これには、コード構造の変更が必要になる場合があります。
以上がクラスメソッドをコールバックとして渡す方法: メカニズムとテクニックを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。