php闭包函数简析
閉包函數(shù)(closures)也叫匿名函數(shù),使用js的童鞋應該比較熟悉。PHP5.3開始引入了閉包的特性。
聲明一個匿名函數(shù)是:
$func = function() {}; //帶結束符匿名函數(shù)因為沒有名字,如果要使用它,需要將其返回給一個變量。
在閉包函數(shù)里,如果要用到上文定義的一個變量,需要使用use關鍵字。直接使用變量是不行的。
<?php$arr = [1,2,3];$max = 2;//匿名函數(shù)第一個括號里的參數(shù)是調用時賦予的。use里的參數(shù)是來自父類作用域的。 $res = array_map(function($v1) use ($max){if($max > 1){return $v1 *= 2;} }, $arr);var_dump($res);結果:
array (size=3)0 => int 21 => int 42 => int 6PHP閉包的特性并沒有太大驚喜,其實用CLASS就可以實現(xiàn)類似甚至強大得多的功能,更不能和js的閉包相提并論,只能期待PHP以后對閉包支持的改進。不過匿名函數(shù)還是挺有用的,比如在使用array_map、preg_replace_callback等之類的函數(shù)可以不用在外部聲明回調函數(shù)了。使用閉包可以優(yōu)雅的寫PHP代碼。
參考:
PHP閉包(Closure)初探 - 豆?jié){油條Melon的個人頁面 - 開源中國社區(qū)
http://my.oschina.net/melonol/blog/126694
轉載于:https://www.cnblogs.com/52fhy/p/4930461.html
總結
- 上一篇: Android加载/处理超大图片神器!S
- 下一篇: PHP7安装笔记