Mal was ganz anderes. Ein kleiner Programmierexkurs. Wenn Entwickler Klassen schreiben achten sie oft nicht genug auf die Sicherheit ihrer Attribute und deklarieren die einfach öffentlich:
Class Me extends Human {
public $mood = '';
}
Soweit so gut, aber dadurch kann jeder einfach meine Stimmung setzen? Ist das gut? Will ich das?
$Me = new Me;
$Me->mood = 'wildstyle';
Ich weiß nicht wies euch geht, aber ich find das ganz und gar nicht gut. Besser wäre, wenn das vorher nochmal geprüft wird, oder? Also:
Class Me extends Human {
protected $_mood = '';
public function setMood($mood) {
if (in_array(strtolower($mood),
array('wildstyle', 'mehr Unschönheiten')) {
//ich lass mir doch nicht die Laune vermiesen
return FALSE;
} else {
$this->_mood = strval($mood);
return TRUE;
}
}
}
Daraus resultiert dann:
$Me = new Me;
//geht nicht
$Me->setMood('wildstyle');
//geht
$Me->setMood('partypose');
Fühlt man sich dabei nicht gleich viel sicherer? Ja, Getter und Setter haben auch ihre Kritiker. Aber grad bei einem User-Objekt find ich es sehr gut wenn es sich quasi selbst verteidigt. Ihr nicht?

Ich bin im PHP-Sprech nicht firm, für mich ist $mood aber eine private Member-Variable, und in sofern hat die nach außen natürlich nichts zu melden, noch darf sie dort gesetzt werden – also völlig selbstverständlich was du da schreibst
.
Richtig, Im oberen Beispiel ist sie das aber nicht. Und das wäre auch der PHP-Standard. Und aus Bequemlichkeit nutzen den auch viele Entwickler.
Deswegen dieser – zugegeben nicht allzu ernste – Hinweis auf die Nachteile
Dieses Paradigma ist gemeinhin auch als Datenkapselung bekannt und gehört imho zum guten Ton der OOP.
Also der ganze PHP Kram geht an mir genau so vorbei wie Hindu oder Serbokratisch. Aber das man eine Programmierung sicher gestallten sollte ist für mich eigentlich eine Selbstverständlichkeit. Da ist es doch schon ein wenig erschreckend das man hier lesen muss das es anscheinend immer noch nötig ist darauf aufmerksam zu machen.