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