使用魔术方法触发类

时间:2018-02-04 10:58:45

标签: php

我有这个特殊的购物车类:

class Cart
{

    public $items;

    public function __construct() {
        $this->items = $this->getItems();
    }

    public function __get($method_name) {

        if ($method_name == 'total') {
            return $this;
        }

        $get_method = "getTotal" . ucfirst($method_name);

        if (method_exists($this, $get_method)) {

            return $this->{$get_method}();
        }

        return null;
    }

    /**
     * Retrieve the stored products from the cart
     */
    public function getItems($product = null) {
        //return all the items in the shopping cart
    }

    /**
     * Retrieve the total number of items in the cart
     */
    public function getTotalItems() {

        return count($this->items);
    }

    public function getTotalQuantity() {

        //return the total quantity of items in the shopping cart
    }
}

我有可能这样做:

  1. $cart->items获取购物车中的所有商品
  2. $cart->total->quantity触发类的getTotalQuantity方法
  3. 我希望在执行getTotalItems时触发$cart->total->items方法,但它始终使用类的属性items而不是getTotalItems方法。

    当我更改属性items的可见性时,它工作正常,但我不想使用此方法。

    如何将$cart->total->items引导至方法getTotalItems而非财产items

0 个答案:

没有答案