在某些場景下,您可能需要將類別方法作為回調傳遞給其他函數以提高效率具體任務的執行。本文將引導您完成實現此目的的各種機制。
要將函數作為回調傳遞,您可以直接將其名稱作為字串提供。但是,此方法不適用於類別方法。
類別實例方法可以使用陣列作為回調傳遞,該陣列以物件為第一個元素,方法名稱為第二。這種方法在同一個類別內部和外部都有效。
// 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