首页 > Web开发 > 详细

PHP一个典型的闭包实例

时间:2016-03-14 13:33:14      阅读:274      评论:0      收藏:0      [点我收藏+]
<?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);

 

PHP一个典型的闭包实例

原文:http://www.cnblogs.com/gide/p/5275204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!