簡單介紹 Callback (回呼函式)
Callback (回呼函式),意思是指能藉由參數 (argument) 通往另一個函式的函式,聽起來很饒舌,我們用 PHP 來示範什麼是 Callback。
根據官網對於 Callback 的介紹,下面這個 PHP 方法可以接受用戶自定義的回呼函式作為參數。
call_user_func()
在 PHP 中,可以將函式以字串的方式來傳遞,下面就是 Callback 的一個簡單示範。
<?php
function callbackFunction()
{
echo 'Hello World!';
}
// 將 callbackFunction() 以字串參數的方式傳入 call_user_func()
// 這個時候會執行外部的函式 callbackFunction()
call_user_func('callbackFunction');
// 執行結果
// Hello World!
在執行 call_user_func()
之前,作為 Callback 的 myFunction() 會先被執行,除了簡單的函式之外,也可以對物件還有靜態方法使用 Callback。
<?php
class MyClass
{
static function myCallbackMethod()
{
echo 'Hello World!';
}
}
// 將物件方法或是靜態方法當作 Callback
// 將靜態方法當作 Callback
call_user_func(['MyClass', 'myCallbackMethod']);
// 將靜態方法當作 Callback 的另外一種方法
call_user_func('MyClass::myCallbackMethod');
// 將物件方法當作 Callback
$obj = new MyClass();
call_user_func([$obj, 'myCallbackMethod']);
知道什麼是 Callback 之後,我們可以自己簡單寫一個 Callback 的範例。
<?php
function sayHello(): string
{
return 'Hello ';
}
function sayHelloToSomeone($callback, string $name)
{
echo $callback . $name;
}
$sayHello = sayHello();
sayHelloToSomeone($sayHello, 'Shark');
// 執行結果
// Hello Shark