亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP5匿名函數的實例

2024-09-04 11:49:17
字體:
來源:轉載
供稿:網友

匿名函數小編使用得非常的少了在開發時一般用不到php匿名函數了,但在js中匿名函數用到比較多了,下文我來為各位介紹php中匿名函數用法.

PHP5.3起就支持匿名函數,可以放心在生產環境中使用,對于PHP的很多新特性該用的地方要大膽使用,可以使代碼更簡潔,功能實現也更加方便.

以下是PHP匿名函數的一個小的簡單實例:

  1. function func($list,$u_wangwang
  2.     //匿名函數,獲取其他行聯號 
  3.     $other_num = function($num){ 
  4.         $num = explode('.'$num); 
  5.         return $num[0]; 
  6.     }; 
  7.     $res = $other_num($v['sb_other_num']); 
  8.     return $res

首先在方法里定義了一個匿名函數,有一個參數,然后調用的時候進行傳參.

PHP中,傳遞Callback的方式,一直很丑陋,在PHP5.3以前,我們只有倆種選擇:

1.字符串的函數名

2.使用create_function的返回值

在PHP5.3以后, 我們多了一個選擇,也就是Closure.

$func = function () { ... };

array_walk($arr, $func);

從實現上來說,第一種方式: 傳遞函數名字符串是最簡單的.

而第二種方式create_function, 其實和第一種方式本質上一樣的, create_function返回一個字符串的函數名, 這個函數名的格式是:

"/000_lambda_" . count(anonymous_functions)++;

我們來看看create_function的實現步驟:

1.獲取參數, 函數體

2.拼湊一個"function __lambda_func (參數) { 函數體;} "的字符串

3.eval之

4.通過__lambda_func在函數表中找到eval后得到的函數體, 找不到就出錯

5.定義一個函數名:"/000_lambda_" . count(anonymous_functions)++

6.用新的函數名替換__lambda_func

7.返回新的函數名

我們來驗證下:

  1. <?php 
  2. create_function(""'echo __FUNCTION__;'); 
  3. call_user_func("/000lambda_1", 1); 
  4. ?> 
  5. //輸出 
  6. __lambda_func 

因為在eval的時候, 函數名是”__lambda_func”, 所以匿名函數內會輸出__lambda_func, 而因為最后用”/000_lambda_” . count(anonymous_functions)++重命名了函數表中的”__lambda_func”函數, 所以可通過”/000_lambda_” . count(anonymous_functions)++調用這個匿名函數.

為了證實這一點,可以將create_function的返回值dump出來查看.

而在PHP5.3發布的時候, 其中有一條new feature就是支持閉包/Lambda Function, 我第一反應是以為zval新增了一個IS_FUNCTION, 但實際上是構造了一個PHP5.3引入的Closure”類”的實例, Closure類的構造函數是私有的, 所以不能被直接實例化, 另外Closure類是Final類, 所以也不能做為基類派生子類.

  1. //php-5.3.0 
  2. $class = new ReflectionClass("Closure"); 
  3. var_dump($class->isInternal()); 
  4. var_dump($class->isAbstract() ); 
  5. var_dump($class->isFinal()); 
  6. var_dump($class->isInterface()); 
  7. //輸出: 
  8. bool(true) 
  9. bool(false) 
  10. bool(true) 
  11. bool(false) 
  12. ?> 

而PHP5.3中對閉包的支持,也僅僅是把要保持的外部變量,做為Closure對象的”Static屬性”(并不是普通意義上的可遍歷/訪問的屬性).

  1. //php-5.3.0 
  2. $b = "laruence"
  3. $func = function($ause($b) {}; 
  4. var_dump($func); 
  5. /* 輸出: 
  6. object(Closure)#1 (2) { 
  7.   ["static"]=> 
  8.   array(1) { 
  9.     ["b"]=> 
  10.     string(8) "laruence" 
  11.   } 
  12.   ["parameter"]=> 
  13.   array(1) { 
  14.     ["$a"]=> 
  15.     string(10) "<required>" 
  16.   } 
  17. } 
  18. */ 

這個實現,個人認為和JS對閉包的支持比起來,還是有些太簡陋了~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线电影av不卡网址| 97国产在线观看| 日韩中文字幕网| 在线播放国产一区二区三区| 精品电影在线观看| 日本精品一区二区三区在线| 欧美激情第三页| …久久精品99久久香蕉国产| 久久久国产一区二区三区| 中文亚洲视频在线| 国产91精品久久久久| 国产精品视频精品| 国产剧情日韩欧美| 亚洲综合大片69999| 亚洲人成绝费网站色www| 26uuu另类亚洲欧美日本老年| 91精品国产自产在线| 欧美日韩亚洲视频| 亚洲人成在线电影| 91在线高清视频| 91精品一区二区| 亚洲第一精品福利| 久久久之久亚州精品露出| 日韩高清不卡av| 97视频在线观看亚洲| 久久久久久久久久亚洲| 欧美日韩色婷婷| 精品国产91乱高清在线观看| 欧美在线观看网址综合| 亚洲国模精品一区| 日韩美女av在线免费观看| 亚洲毛片在线观看| 欧美在线不卡区| 精品国产成人av| 国产情人节一区| 亚洲欧美成人在线| 成人黄色免费在线观看| 亚洲人成77777在线观看网| 国产精品va在线播放我和闺蜜| 亚洲一区亚洲二区亚洲三区| 欧美午夜美女看片| 日韩视频免费在线观看| 2019国产精品自在线拍国产不卡| 国产精品视频在线观看| 欧美激情国产日韩精品一区18| 狠狠做深爱婷婷久久综合一区| 尤物tv国产一区| 欧美日韩国产一区二区三区| 91精品国产自产91精品| 68精品国产免费久久久久久婷婷| 秋霞av国产精品一区| 国产日本欧美在线观看| 成人自拍性视频| 亚洲自拍高清视频网站| 中文字幕日韩综合av| 精品国产一区二区三区久久| 日韩在线视频观看| 久99九色视频在线观看| 中文字幕亚洲一区二区三区五十路| 最近2019中文字幕mv免费看| 麻豆国产va免费精品高清在线| 亚洲美女自拍视频| 国产精品成人av性教育| 91探花福利精品国产自产在线| 日韩精品在线观看一区| 亚洲а∨天堂久久精品喷水| 欧美乱人伦中文字幕在线| 国内免费久久久久久久久久久| 精品无码久久久久久国产| 国产精品爱啪在线线免费观看| 亚洲网站视频福利| 成人免费视频xnxx.com| 7777精品视频| 欧美日韩国产二区| 欧美另类69精品久久久久9999| 精品偷拍各种wc美女嘘嘘| 91av视频在线播放| 91视频国产精品| 91精品在线观看视频| 亚洲电影免费观看高清完整版| 91探花福利精品国产自产在线| 日韩欧美在线一区| 久久在线免费观看视频| 一区二区三区国产视频| 亚洲欧美激情另类校园| 日本成人在线视频网址| 国产精品影院在线观看| 日本免费久久高清视频| 欧美性69xxxx肥| 亚洲精品美女久久| 成人免费大片黄在线播放| 亚洲在线免费看| 欧美激情手机在线视频| 日本精品免费观看| 欧洲亚洲女同hd| 懂色av中文一区二区三区天美| 日韩欧美中文免费| 国产成+人+综合+亚洲欧美丁香花| 国产精品成人va在线观看| 国外成人性视频| 欧美肥臀大乳一区二区免费视频| 国产日韩换脸av一区在线观看| 亚洲欧美日韩网| 日韩成人在线视频观看| 久久青草精品视频免费观看| 夜夜躁日日躁狠狠久久88av| 久久久久久国产精品三级玉女聊斋| 日韩欧美精品中文字幕| 岛国av一区二区在线在线观看| 不用播放器成人网| 欧美专区在线播放| 欧洲成人免费视频| 亚洲欧美日韩中文视频| 欧美色videos| 91av在线看| 日韩在线欧美在线国产在线| 亚洲老头同性xxxxx| 国产成人精品日本亚洲| 伊人久久综合97精品| 色综合伊人色综合网| 亲爱的老师9免费观看全集电视剧| 中文字幕免费精品一区高清| 日韩激情片免费| 久久久精品中文字幕| 九九久久精品一区| 欧美日韩国产中字| 欧美男插女视频| 在线日韩日本国产亚洲| 欧美另类极品videosbestfree| 国产一区红桃视频| 亚洲高清不卡av| 91精品国产亚洲| 精品性高朝久久久久久久| 久久久午夜视频| 欧美日韩亚洲成人| 久久精品国产91精品亚洲| 欧美日韩免费在线观看| 日韩中文字幕国产精品| 欧美极品少妇与黑人| 韩国三级电影久久久久久| 九九精品视频在线| 国产欧美亚洲视频| 欧美又大粗又爽又黄大片视频| 欧美一区二粉嫩精品国产一线天| 亚洲女人被黑人巨大进入al| xvideos成人免费中文版| 国产精品高潮呻吟久久av无限| 日韩成人在线视频| 久久不射热爱视频精品| 日韩精品日韩在线观看| 欧美精品video| 成人在线视频网站| 亚洲va久久久噜噜噜| 久久精品最新地址| 亚洲自拍偷拍福利| 国产亚洲xxx| 国产一区二区三区直播精品电影| 亚洲v日韩v综合v精品v| 海角国产乱辈乱精品视频| 国产高清在线不卡| 91欧美精品午夜性色福利在线| 亚洲国产成人精品久久久国产成人一区| 国语自产精品视频在线看抢先版图片| 日韩中文视频免费在线观看|