在 PHP 中實作回呼
PHP 中的術語「回呼」包含作為函數指標運算的字串和陣列。在PHP 4 中,出現了以下語法:
- $cb1 = 'someGlobalFunction';
- $cb2 = ['ClassName', 'someStaticMethod'];
$cb3 = [$object, 'somePublicMethod'];-
雖然PHP 5.2.3 引入了可呼叫語法,但包含此類語法的字串無法直接呼叫。 PHP 4 的舊語法包括:
$cb3 = array(&$object, 'somePublicMethod');-
以下程式碼片段示範了可呼叫值的安全使用:
<code class="php">if (is_callable($cb2)) {
$returnValue = call_user_func($cb2, $arg1, $arg2);
}</code>
現代PHP 版本支援直接呼叫上述前三種格式作為$cb()。此外,call_user_func 和 call_user_func_array 支援所有提供的格式。
註解與警告:
命名空間函數/類別需要完全限定的名稱,例如['VendorPackageFoo', 'method'].-
call_user_func 不支援透過引用傳遞非物件。使用 call_user_func_array 或 $cb();在更高版本的 PHP 版本中。 - 具有 __invoke() 方法的物件(包括匿名函數)可以用作回調,但通常與傳統的「回調」術語無關。
- 舊版 create_function () 建立一個全域函數並傳回其名稱。請改用匿名函數。
-
以上是如何在 PHP 中有效使用回呼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!