在"告诉,不要问" - 原则之后,不应该在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)