您的位置:首页 > 编程语言 > PHP开发

PHP一个典型的闭包实例

2016-03-14 11:58 543 查看
<?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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: