日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php 注册回调函数,PHP回调函数

發(fā)布時間:2025/4/16 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 注册回调函数,PHP回调函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在開發(fā)系統(tǒng)的過程中,有時候希望針對一個對象或者一個值執(zhí)行多個不相干的操作,那么此時運(yùn)用回調(diào)將是最好的方式,回調(diào)函數(shù)可以是匿名函數(shù)、非匿名函數(shù)以及靜態(tài)方法。

class Person{

public $name;

public $age;

function __construct($name, $age){

$this->name = $name;

$this->age = $age;

}

}

class ProcessHire{

private $callbacks;

// 注冊回調(diào)方法

function registerCallback($callback){

if (!is_callable($callback)){

throw new Exception("callback not callable");

}

$this->callbacks[] = $callback;

}

// 逐一執(zhí)行回調(diào)方法,并發(fā)參數(shù)傳入回調(diào)方法

function hire($person){

print "Hiring {$person->name}:
";

foreach ($this->callbacks as $callback){

call_user_func($callback, $person);

}

}

}

// 匿名函數(shù)作為回調(diào)函數(shù)

$fun=create_function('$person','print "importting ({$person->name})";');

$processor = new ProcessHire();

$processor->registerCallback($fun);

$processor->hire(new Person("LiFang", 20));

print "
";

$processor->hire(new Person("LiuMing", 23));執(zhí)行結(jié)果:

Hiring LiFang:

importting (LiFang)

Hiring LiuMIng:

importting (LiuMing)

// 非匿名函數(shù)作為回調(diào)函數(shù)

class Sign{

function signContract($person){

print "sign a contract with {$person->name}
";

}

}

$processor = new ProcessHire();

// 這里傳入的是數(shù)組,而且第一個是對象實(shí)例,第二個是函數(shù)名稱

$processor->registerCallback(array(new Sign(), "signContract"));

//$processor->registerCallback(array("Sign", "signContract")); 也可以這么寫,包括靜態(tài)方法

$processor->hire(new Person("LiFang", 20));

print "
";

$processor->hire(new Person("LiuMing", 23));執(zhí)行結(jié)果:

Hiring LiFang:

sign a contract with LiFang

Hiring LiuMIng:

sign a contract with LiuMing

// 靜態(tài)方法作為回調(diào)函數(shù)

class Check{

static function checkAge($maxAge){

$age = 0;

return function($person) use($maxAge, $age){

$age = $person->age;

print "check: $age
";

if ($age>$maxAge){

print "age is too hight: $age";

}

};

}

}

$processor = new ProcessHire();

$processor->registerCallback(Check::checkAge(40));

$processor->hire(new Person("LiFang", 20));

print "
";

$processor->hire(new Person("LiuMing", 43));執(zhí)行結(jié)果: ?Hiring LiFang: ???? check: 20 ?Hiring LiuMIng: ???? check: 43 ???? age is too hight: 43 當(dāng)讓,你可以根據(jù)需要同時注冊多個不相干的方法,這樣,系統(tǒng)就會調(diào)用多個方法來處理你傳入的對象了。

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的php 注册回调函数,PHP回调函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。