日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

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

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

在開發(fā)系統(tǒng)的過程中,有時(shí)候希望針對(duì)一個(gè)對(duì)象或者一個(gè)值執(zhí)行多個(gè)不相干的操作,那么此時(shí)運(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;

// 注冊(cè)回調(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ù)組,而且第一個(gè)是對(duì)象實(shí)例,第二個(gè)是函數(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ù)需要同時(shí)注冊(cè)多個(gè)不相干的方法,這樣,系統(tǒng)就會(huì)調(diào)用多個(gè)方法來(lái)處理你傳入的對(duì)象了。

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

總結(jié)

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

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