OOP - 没有GET/SET

Tom*_*Tom 5 php oop

"告诉,不要问" - 原则之后,不应该在OOP中使用getter.

但是如何解决问题(至少我认为)实际上需要一些来自对象的"内部信息"?那么如何更改以下示例以便create_bill()函数不需要ASK来获取每个项目的价格?

class chopping_cart {

    private $itemlist = array();

    function item_add( $name, $price ) {
        $his->itemlist[]=new item( $name, $price );
    }
    private create_bill() {

        foreach $this->itemlist AS $element;
        $sum += $element->get_price();

    }
}


class item {
    private $name;
    private $price;
    function __construcor($name,$price) {...}
    function get_price() {
        return $price;
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

$sc = new shopping_cart()
$sc->item_add( "Bike", 1.00 );
$sc->item_add( "Ship", 2.00 );
$sc->create_bill();
Run Code Online (Sandbox Code Playgroud)

Ja͢*_*͢ck 7

如果您没有使用请求的数据/状态来更改您所指的对象,我认为使用getter并没有任何问题.

该原则讨论了这样的场景:

if ($item->get_price() < 5) {
    $item->set_price(5);
}
Run Code Online (Sandbox Code Playgroud)

这应该变成类似的东西$item->set_minimum_price(5).