Heim >Backend-Entwicklung >PHP-Tutorial >PHP匿名函数(闭包)

PHP匿名函数(闭包)

WBOY
WBOYOriginal
2016-06-23 13:38:241165Durchsuche

 

匿名函数(Anonymous functions),也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数。最经常用作回调函数(callback)参数的值。当然,也有其它应用的情况。

结合array_walk和匿名函数来实现一个结算功能

array_walk() 函数对数组中的每个元素应用回调函数。如果成功则返回 TRUE,否则返回 FALSE。

 1 <?php 2 class anyMouseTest{ 3         //定义商品类型、价格 4     const IPHONE6_PRICE = 5500; 5     const XIAOMI4_PRICE = 1999; 6     const HONERX_PRICE = 799; 7  8     private $_productSort; 9     private $_products;10     11     public function __construct(){12         $this->_productSort = array('iphone6','xiaomi4','honerx');13         $this->_products = array();14     }15 16     public function addProduct($product , $sum){17         if(in_array($product , $this->_productSort) && is_int($sum)){18             $this->_products[$product] = $sum;19         }20     }21 22     public function getCount($tax){23         $count = 0;24 25         $callback = function($sum , $product) use ($tax , &$count){26             $price = constant(__CLASS__.'::'.strtoupper($product).'_PRICE');27             $curPrice = $price* $sum * $tax;28             $count += $curPrice;29         };30 31         array_walk($this->_products, $callback);32         return $count;33     }34 }35 36 $oanyMouse = new anyMouseTest;37 38 $oanyMouse->addProduct('iphone6',1);39 $oanyMouse->addProduct('honerx',2);40 echo $oanyMouse->getCount(1);

其中constant用于返回字符串形式常量的值

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn