zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    linux下的进程
    进程间通讯
    const关键字
    关于嵌入式web服务器
    指针
    内存管理(malloc和free的用法)
    关于read和fread
    C库的制作
    C语言考试
    docker 配置阿里云镜像加速
  • 原文地址:https://www.cnblogs.com/gide/p/5275204.html
Copyright © 2011-2022 走看看