在某些場景下,您可能需要將類別方法作為回調傳遞給其他函數以提高效率具體任務的執行。本文將引導您完成實現此目的的各種機制。
要將函數作為回調傳遞,您可以直接將其名稱作為字串提供。但是,此方法不適用於類別方法。
類別實例方法可以使用陣列作為回調傳遞,該陣列以物件為第一個元素,方法名稱為第二。這種方法在同一個類別的內部和外部都有效。
<code class="php">// 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']);</code>
靜態類別方法不需要物件實例。它們可以直接作為包含類別名稱和方法名稱的陣列傳遞。
<code class="php">// 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+</code>
除了提到的方法之外,您還可以傳遞匿名函數作為回調,但是這可能需要修改您的程式碼結構。
以上是如何將類別方法作為回調傳遞:了解機制和技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!