码迷,mamicode.com
首页 > Web开发 > 详细

PHP闭包

时间:2018-08-28 13:01:20      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:isset   gre   ant   访问   一个   不能   csharp   返回   闭包   

1、理解闭包之前先知道一个PHP的array_walk函数

<?php
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
?>

结果是:(调用了3次myfunction函数)
The key a has the value red
The key b has the value green
The key c has the value blue
<?php
class Cart  
{  
    const PRICE_BUTTER  = 1.00;  
    const PRICE_MILK    = 3.00;  
    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(__CLASS__ ."::PRICE_" .  
                    strtoupper($product));  
                //其中constant 返回 上边定义常量的值
               //跟self::访问一样,self不能再这里使用,所以用上边
                $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‘, 3);  
$my_cart->add(‘eggs‘, 6);  
   
// 打出出总价格,其中有 5% 的销售税.  
print $my_cart->getTotal(0.05) . "\n";  
// The result is 54.29  
?>    
&符号则使用变量的地址(传址)

  

 

PHP闭包

标签:isset   gre   ant   访问   一个   不能   csharp   返回   闭包   

原文地址:https://www.cnblogs.com/aoxueshou/p/9547330.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!