写一个购物车类,可以存储一些已经添加的商品和每种商品的数量。其中有一个方法用来计算购物车中所有商品的总价格,该方法使用一个 closure 作为回调函数。

PHP 基础面试题
0
0
分享
推荐答案
展示答案
class Cart { const PRICE_BUTTER = 1.00; const PRICE_MILK = 2.00; const PRICE_EGGS = 3.00; 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(__CLASS__ . "::PRICE_" . strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); }; array_walk($this->products, $callback); return round($total, 2); } } $my_cart = new Cart; // 往购物车里添加条目 $my_cart->add('butter', 1); $my_cart->add('milk', 2); $my_cart->add('eggs', 3); // 打出出总价格,其中有 5% 的销售税. print $my_cart->getTotal(0.05) . "\n"; // 最后结果是 14.7 ?>

答案已隐藏