"Tell, don't Ask"-principle'u takiben, bir kişi OOP'taki alıcıları kullanmamalıdır.OOP - GET/SET olmadan
Ama (en azından öyle düşünüyorum) sorunların nasıl çözüleceği, bir nesneden gerçekten "içeriden bilgi" ye gereksinim duyuyor? Yani aşağıdaki örnek nasıl değiştirilir, böylece create_bill() işlevi her bir öğenin fiyatı için sormaya gerek duymaz?
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;
}
}
Kullanımı:
$sc = new shopping_cart()
$sc->item_add("Bike", 1.00);
$sc->item_add("Ship", 2.00);
$sc->create_bill();
, alışveriş sepetinin her bir öğenin fiyatının değerini öğrenmesini sağlamak neden kötüdür? – user12345613
belirtilen "Tell Don't Ask" ifadesini izleyerek kötülük gibi görünüyor. – Tom
Bu "söyleme" ilkesini nereden duydunuz? Bunu hiç duymamıştım. – xxpor