PHP匿名函式

yifanwu發表於2021-09-09

// 一個基本的購物車,包括一些已經新增的商品和每種商品的數量。

// 其中有一個方法用來計算購物車中所有商品的總價格,該方法使

// 用了一個 closure 作為回撥函式。

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 

?>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2802240/,如需轉載,請註明出處,否則將追究法律責任。

相關文章