真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

在PHP中最常用的幾種回調(diào)寫法有哪些-創(chuàng)新互聯(lián)

這篇文章主要介紹了在PHP中最常用的幾種回調(diào)寫法有哪些,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

成都創(chuàng)新互聯(lián)是一家專業(yè)從事網(wǎng)站制作、網(wǎng)站設(shè)計(jì)的網(wǎng)絡(luò)公司。作為專業(yè)網(wǎng)站建設(shè)公司,成都創(chuàng)新互聯(lián)依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!

在workerman中會經(jīng)常使用,我們先寫一個(gè)回調(diào)函數(shù),當(dāng)某個(gè)行為被觸發(fā)后使用該函數(shù)處理相關(guān)邏輯。

在PHP中最常用的幾種回調(diào)寫法如下

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

匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures),允許臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)。最經(jīng)常用作回調(diào)函數(shù)(callback)參數(shù)的值。當(dāng)然,也有其它應(yīng)用的情況。

匿名函數(shù)的回調(diào)經(jīng)常將其賦給一個(gè)變量(或一個(gè)對象的屬性)

$add = function($number1,$number2){
    return $number1+$number2;
};
echo $add(1,10);

最終結(jié)果會輸出11。

這中間有一個(gè)use的用法,現(xiàn)在很多框架都在使用,包括我自己發(fā)布的 yii2-wx 在處理微信付款結(jié)果通知的時(shí)候也有用到。

簡單點(diǎn)說就是當(dāng)我們設(shè)置了匿名函數(shù)的時(shí)候,可以從父作用域繼承變量,比如如下代碼

$number = 10;
$add = function($number1,$number2) use ($number){
    return $number1+$number2 + $number;
};
echo $add(1,10);

則結(jié)果是21,沒錯(cuò),匿名函數(shù)體可以使用繼承過來的變量 $number。

一點(diǎn)要注意的是,這種繼承是在函數(shù)被定義的時(shí)候就確定了,比如如下代碼

$number = 10;
$add = function($number1,$number2) use ($number){
    return $number1+$number2 + $number;
};
$number = 11;
echo $add(1,10);

結(jié)果還是21,后面重新的賦值并沒有起到作用。

那我們?nèi)绾谓鉀Q這個(gè)問題那?

@nai8@

只需要將繼承的變量設(shè)置為引用即可,如下

$number = 10;
$add = function($number1,$number2) use (&$number){
    return $number1+$number2 + $number;
};
$number = 11;
echo $add(1,10);

搞定了,22出現(xiàn)了。1 + 10 + 11;

在workerman中一般匿名函數(shù)作為回調(diào)用法如下

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
$http_worker = new Worker("http://0.0.0.0:2345");
// 匿名函數(shù)回調(diào)
$http_worker->onMessage = function($connection, $data)
{
    // 向?yàn)g覽器發(fā)送hello world
    $connection->send('hello world');
};
Worker::runAll();

普通函數(shù)作為回調(diào)

這種用法并沒有什么可以多說的,不像匿名函數(shù)那么多細(xì)節(jié),直接看代碼。

function add($number1,$number2){
    return $number1+$number2;
};
$add = "add";
echo $add(1,10);

在這里沒有use用法,并且函數(shù)定義和賦值給變量順序誰上誰下都可以,在語法上這只是對add的一次變量賦值,之所以能作為回調(diào)是我們使用了add() 導(dǎo)致的,在workerman中一般用法如下

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
$http_worker = new Worker("http://0.0.0.0:2345");
// 匿名函數(shù)回調(diào)
$http_worker->onMessage = 'on_message';
// 普通函數(shù)
function on_mesage($connection, $data)
{
    // 向?yàn)g覽器發(fā)送hello world
    $connection->send('hello world');
}
Worker::runAll();

類方法作為回調(diào)

學(xué)習(xí)了前面的知識,類的方法作為回調(diào)就好學(xué)了,一句話:將一個(gè)類的公共方法作為回調(diào)函數(shù);

直接上在workerman中的用法

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
// 載入MyClass
require_once __DIR__.'/MyClass.php';
$worker = new Worker("websocket://0.0.0.0:2346");
// 創(chuàng)建一個(gè)對象
$myObject = new MyClass();
$worker->onMessage   = [$myObject, 'onMsg'];
Worker::runAll();

我們將MyClass的onMsg方法作為回調(diào)賦值給$worker->onMessage。

類靜態(tài)方法做為回調(diào)

這個(gè)最簡單了,看代碼。

use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
// 載入MyClass
require_once __DIR__.'/MyClass.php';
$worker = new Worker("websocket://0.0.0.0:2346");
$worker->onMessage   = [$myObject, 'onMsg'];
Worker::runAll();

我們將MyClass的靜態(tài)方法onMsg方法作為回調(diào)賦值給worker->onMessage,因?yàn)槭庆o態(tài)方法,在onMsg內(nèi)不能用this哈。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“在PHP中最常用的幾種回調(diào)寫法有哪些”這篇文章對大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,,關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!


網(wǎng)站題目:在PHP中最常用的幾種回調(diào)寫法有哪些-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://weahome.cn/article/djgehi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部