PHP一个典型的闭包实例
<?php // 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。 // 其中有一个方法用来计算购物车中所有商品的总价格,该方法使 // 用了一个 closure 作为回调函数。 class Carts { const PRICE_BUTTER = 1.0; const PRICE_MILK = 3.0; const PRICE_EGGS = 6.95; protected $products = array(); public function add($product, $quantity) { $this->products[$product] = $quantity; } public function getQuantity($product) { return isset($this->products[$product]) ? $this->products[$product] : false; } public function getTotal($tax) { $total = 0.00; $callback = function ($quantity,$product) use ($tax,&$total) { $pricePerItem = constant(self."::PRICE_".strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); }; array_walk($this->products,$callback); return round($total,2); } } //往购物车添加 $my_cart = new Carts(); $my_cart->add('butter',1); $my_cart->add('milk',3); $my_cart->add('eggs',6); //打印税 echo $my_cart->getTotal(0.05);