PHP一个典型的闭包实例

时间:2021-02-17 05:43:18
<?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);