簡單介紹 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

 

參考資料
PHP 官方文件
MDN 文件 - 回呼函式

sharkHead 後端工程師,稍微擅長 Laravel、Python 與 Google
對於前端有興趣,無奈沒什麼慧根