在"告诉,不要问" - 原则之后,不应该在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)
如果您没有使用请求的数据/状态来更改您所指的对象,我认为使用getter并没有任何问题.
该原则讨论了这样的场景:
if ($item->get_price() < 5) {
$item->set_price(5);
}
Run Code Online (Sandbox Code Playgroud)
这应该变成类似的东西$item->set_minimum_price(5)
.
归档时间: |
|
查看次数: |
405 次 |
最近记录: |