回呼函式就是在主行程執行程序中,滿足某個條件后,跳轉到預先設定好的函式中去執行的一種函式,
舉例說明:
張三到一個水果店買蘋果,剛好蘋果賣完了,于是張三在店員那里留下了自己的電話,一個小時后店里有貨了,店員就打了張三的電話,張三接到電話后就到水果店里去取貨,
在這個例子里,張三的電話號碼就叫回呼函式,張三把電話留給店員就叫注冊回呼函式,店里有貨了叫觸發回呼函式的事件,店員給張三打電話叫呼叫回呼函式,張三到店里去取貨叫做回應回呼事件,
基于字串的回呼函式:
<?php
//注冊回呼函式
function insert(int $i):bool {
echo "Insert data: {$i}\n";
return true; //回應回呼事件
}
function action(array $arr, callable $function) {
foreach ($arr as $value) {
if ($value % 10 == 0) { //觸發回呼函式的事件
call_user_func($function, $value); //呼叫回呼函式
}
}
}
$arr = range(0,1000);
action($arr, 'insert');
其中核心的代碼為:
action($arr, 'insert');
function action(array $arr, callable $function)
call_user_func($function, $value);
function insert(int $i)
基于匿名函式的回呼函式:
<?php
function action(array $arr, callable $function) {
foreach ($arr as $value) {
if ($value % 10 == 0) { //觸發回呼函式的事件
call_user_func($function, $value); //呼叫回呼事件
}
}
}
$arr = range(0,1000);
action($arr, function($i) { //注冊回呼函式
echo "Insert data: {$i}\n";
return true; //回應回呼事件
});
其中核心的代碼為:
action($arr, function($i){});
function action(array $arr, callable $function)
call_user_func($function, $value);
基于類靜態方法的回呼函式:
<?php
function action(array $arr, callable $function) {
foreach ($arr as $value) {
if ($value % 10 == 0) { //觸發回呼函式的事件
call_user_func($function, $value); //呼叫回呼事件
}
}
}
class A {
static function insert(int $i):bool { //注冊回呼函式
echo "Insert data: {$i}\n";
return true; //回應回呼事件
}
}
$arr = range(0,1000);
action($arr, 'A::insert');
action($arr, array('A', 'insert'));
其中核心的代碼為:
action($arr, 'A::insert');
function action(array $arr, callable $function)
call_user_func($function, $value);
A::static function insert(int $i)
基于類方法的回呼函式:
<?php
function action(array $arr, callable $function) {
foreach ($arr as $value) {
if ($value % 10 == 0) { //觸發回呼函式的事件
call_user_func($function, $value); //呼叫回呼事件
}
}
}
class A {
function insert(int $i):bool { //注冊回呼函式
echo "Insert data: {$i}\n";
return true; //回應回呼事件
}
}
$arr = range(0,1000);
$a = new A();
action($arr, array($a, 'insert'));
其中核心的代碼為:
action($arr, array($a, 'insert'));
function action(array $arr, callable $function)
call_user_func($function, $value);
A->function insert(int $i)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/38650.html
標籤:PHP
