Gibt es praktische Gründe, die für eine generelle Datenkapselung sprechen (keine public Attribute, immer setter und getter)?
Wenn beim Setzen des Attributes weitere Aktionen ausgeführt werden sollen oder beim Lesen bspw. dynamisch etwas zurückgegeben werden soll, dann macht Datenkapselung natürlich Sinn.
Aber warum auch andere Variablen, deren getter / setter wie im folgenden aufgebaut sind, kapseln?
Auch das Argument, dass bei anfänglicher Planung keine weiteren Aktionen beim Setzen / Lesen ausgeführt werden sollen und dann nachträglich doch noch eine setter Methode benötigt wird, lässt sich dadurch entkräften, dass man über __get() und __set() diese auch noch nachträglich hinzufügen kann in einer abgeleiteten Klasse z.B.
Der durch die magischen Methoden entstehende Performance-Verlust lässt sich vermutlich durch das Einsparen der vielen get / set Methoden kompensieren.
Sind da Gründe für eine generelle Datenkapselung, die ich nicht kenne?
Wenn beim Setzen des Attributes weitere Aktionen ausgeführt werden sollen oder beim Lesen bspw. dynamisch etwas zurückgegeben werden soll, dann macht Datenkapselung natürlich Sinn.
Aber warum auch andere Variablen, deren getter / setter wie im folgenden aufgebaut sind, kapseln?
PHP-Code:
class c
{
private $a;
public function getA()
{
return $this->a;
}
public function setA($value)
{
$this->a=$value;
}
}
Der durch die magischen Methoden entstehende Performance-Verlust lässt sich vermutlich durch das Einsparen der vielen get / set Methoden kompensieren.
Sind da Gründe für eine generelle Datenkapselung, die ich nicht kenne?
Kommentar