簡單介紹 Callback (回呼函式)

程式技術
sharkHead

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

參考資料

sharkHead
written by
sharkHead

後端打工仔,在下班後喜歡研究各種不同的技術。稍微擅長 PHP,並偶爾涉獵前端開發。個性就像動態語言般隨興,但渴望做事能像囉嗦的靜態語言那樣嚴謹。

0 則留言