"Tell, don't Ask"-principleに続いて、OOPでゲッタを使うべきではありません。OOP - GET/SETなし
しかし、どのように問題を解決するには(少なくとも私はそうだと思いますが)、実際にはオブジェクトから「内部情報」が必要ですか?では、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;
}
}
使用法:あなたは、あなたが参照しているオブジェクトを変更することが要求されたデータ/状態を使用していない場合は
$sc = new shopping_cart()
$sc->item_add("Bike", 1.00);
$sc->item_add("Ship", 2.00);
$sc->create_bill();
ショッピングカートにアイテムのアリスが含まれている場合、ショッピングカートに各アイテムの価格の価値を知ることができないのはなぜですか? – user12345613
「尋ねないでください」と述べられている通り、それは悪いと思われる。 – Tom
「尋ねないでください」という原則はどこから聞こえましたか?そのようなことを聞いたのは初めてだ。 – xxpor