シナリオによっては、効率的にクラス メソッドを他の関数へのコールバックとして渡す必要がある場合があります。特定のタスクの実行。この記事では、これを実現するためのさまざまなメカニズムについて説明します。
関数をコールバックとして渡すには、その名前を文字列として直接指定できます。ただし、このメソッドはクラス メソッドには適用できません。
クラス インスタンス メソッドは、オブジェクトを最初の要素、メソッド名を要素とする配列を使用してコールバックとして渡すことができます。 2番。このアプローチは、同じクラス内外の両方で機能します。
// Inside the same class
$this->processSomething([$this, 'myCallback']);
$this->processSomething([$this, 'myStaticCallback']);
// Outside the same class
$myObject->processSomething([new MyClass(), 'myCallback']);
$myObject->processSomething([new MyClass(), 'myStaticCallback']);
静的クラス メソッドにはオブジェクト インスタンスは必要ありません。これらは、クラス名とメソッド名を含む配列として直接渡すことができます。
// Inside the same class
$this->processSomething([__CLASS__, 'myStaticCallback']);
// Outside the same class
$myObject->processSomething(['\Namespace\MyClass', 'myStaticCallback']);
$myObject->processSomething(['\Namespace\MyClass::myStaticCallback']); // PHP 5.2.3
$myObject->processSomething([MyClass::class, 'myStaticCallback']); // PHP 5.5.0
上記のメソッドとは別に、匿名関数をコールバックとして渡すこともできますが、これにはコード構造の変更が必要になる場合があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3