예제 #1
0
<?php

namespace CoR2;

$promo = Promo::init();
$cart = new Cart();
$cart->setPromo($promo);
$cart->add('A0001', 1);
$cart->add('A0002', 2);
$cart->add('B0001', 1);
$cart->add('B0002', 2);
$cart->add('C0001', 1);
$cart->add('C0002', 2);
$cart->calculate();
$cart->listAll();
echo $cart->getTotal(), "\n";
class Cart
{
    protected static $_priceTable = ['A0001' => 100, 'A0002' => 150, 'B0001' => 300, 'B0002' => 200, 'C0001' => 200, 'C0002' => 200];
    protected $_total = 0;
    protected $_items = [];
    protected $_promo = null;
    public function setPromo(Promo $promo)
    {
        $this->_promo = $promo;
    }
    public function add($sn, $quantity)
    {
        $price = static::$_priceTable[$sn];
        $price = $this->_promo->calculate($sn, $price);
        $this->_items[$sn] = [$price, $quantity];