亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

玩轉(zhuǎn)匿名函數(shù)與閉包

Original 2019-08-09 13:10:45 347
abstract:<?php/** * 教學內(nèi)容: 什么是閉包? * 1. 提到閉包,就不得不提匿名函數(shù),php官方手冊中,將閉包與匿名函數(shù)視為等同的 * 2. 閉包的三種使用場景: 函數(shù)內(nèi)部, 函數(shù)參數(shù), 函數(shù)返回值 *//** * 老師,昨晚講的回調(diào),覺得匿名函數(shù)真的很強大,有人說,匿名函數(shù)主要用在閉包中,那么閉包又是什么呢? * 閉包并不是ph

<?php

/**

 * 教學內(nèi)容: 什么是閉包?

 * 1. 提到閉包,就不得不提匿名函數(shù),php官方手冊中,將閉包與匿名函數(shù)視為等同的

 * 2. 閉包的三種使用場景: 函數(shù)內(nèi)部, 函數(shù)參數(shù), 函數(shù)返回值

 */


/**

 * 老師,昨晚講的回調(diào),覺得匿名函數(shù)真的很強大,有人說,匿名函數(shù)主要用在閉包中,那么閉包又是什么呢?

 * 閉包并不是php的專利,很多編程語言都有的,例如,javascript,當然,php中的閉包,還是很有特色的

 */



/**

 * @param $name

 * @return string

 */

$demo1 = function ($name) {

  return $name . '最愛的人是: 趙敏';

};


//調(diào)用匿名函數(shù)

echo $demo1('張無忌'), '<hr>';


//匿名函數(shù)也有自己的作用域,如果要在函數(shù)作用域中使用外部變量,除了傳參,還可以這樣


$belle = '周芷若';


//$demo2 = function ($name) {

$demo2 = function ($name) use ($belle) {

//    return $name . '最愛的人是趙敏';

    return $name . '最愛的人是: ' . $belle;

};


//調(diào)用匿名函數(shù)

echo $demo2('張無忌'), '<hr>';


//匿名函數(shù)可以使用use 關鍵字,訪問參數(shù)列表之外的數(shù)據(jù),而且這個數(shù)組可以來自匿名函數(shù)的外部,這個可太有意思了

//它可以實現(xiàn)非常多的實用功能,極大的增強了函數(shù)的功能


//現(xiàn)在,咱們來詳細說說閉包的問題,理解了匿名函數(shù),以及匿名函數(shù)中的use關鍵字的使用,閉包就非常簡單了


//首先,我們先給閉包下一個簡單的定義: 將匿名函數(shù)當作一個普通變量,在另一個函數(shù)中調(diào)用它,就會形成一個閉包,這時,匿名函數(shù)的功能,

//就是生成一個閉包,所以,現(xiàn)在把匿名函數(shù),直接稱為: 閉包函數(shù), 也是沒問題的。


//變量在函數(shù)中有三個作用:1. 當作局部變量  2.當作參數(shù),其實還是局部變量  3. 當作返回值,基本質(zhì)還是一個局部變量

//所以閉包也有三種使用場景:


//1.閉包函數(shù)當作局部變量使用

$func1 = function () {

    $name = '無忌哥哥';

    //定義一個內(nèi)部的匿名函數(shù)

    $test = function () use ($name) {

        return $name . ',我另一個函數(shù)包住了,快來救我';

    };

    //調(diào)用,必須要調(diào)用一次,才能形成閉包

    return $test();

};


echo $func1(), '<hr>';


//2.閉包函數(shù)當作函數(shù)參數(shù)使用

$name = '無忌哥哥';


$test = function () use ($name) {

    return $name . ',我又被當作參數(shù)啦,你還要我嗎?';

};


$func2 = function (callable $callback) {

    //執(zhí)行匿名回調(diào)并返回

    return $callback();

};

//用匿名函數(shù)做為參數(shù)調(diào)用

echo $func2($test), '<hr>';


//3.閉包函數(shù)當用函數(shù)返回值使用

$func3 = function () {

    $name = '無忌哥哥';


    $test = function () use ($name) {

        return $name . ',我又被當作參數(shù)啦,真倒霉~~';

    };

    return $test;

};


//你可能見到最多的是這種簡寫形式

$func3 = function () {

    $name = '無忌哥哥';


    return function () use ($name) {

        return $name . ',我又被當作返回值,掃地出門啦,你還要我嗎?';

    };

};


// $func3() 的返回值是一個函數(shù),所以再加一對圓括號,才可以執(zhí)行

echo $func3()();


/**

 * 現(xiàn)在明白了,原來閉包可以當作一個普通函數(shù)使用,也可以當作函數(shù)參數(shù)使用,甚至可以當作函數(shù)的返回值

 * 是的,閉包還有二個生效條件:第一,必須是定義一個匿名函數(shù),  第二,必須要執(zhí)行一次來生成閉包函數(shù)

 */



//以上就是最經(jīng)典的三種閉包使用場景,大家記住二點即可:

//第一,必須是定義一個匿名函數(shù),  第二,必須要執(zhí)行一次來生成閉包函數(shù)



Correcting teacher:天蓬老師Correction time:2019-08-15 10:46:13
Teacher's summary:<?php /** * 教學內(nèi)容: 什么是閉包? * 1. 提到閉包,就不得不提匿名函數(shù),php官方手冊中,將閉包與匿名函數(shù)視為等同的 * 2. 閉包的三種使用場景: 函數(shù)內(nèi)部, 函數(shù)參數(shù), 函數(shù)返回值 */ /** * 老師,昨晚講的回調(diào),覺得匿名函數(shù)真的很強大,有人說,匿名函數(shù)主要用在閉包中,那么閉包又是什么呢? * 閉包并不是php的專利,很多編程語言都

Release Notes

Popular Entries