Oder, du benutzt PHPDoc-Annotationen, damit wird der Code sogar noch kürzer als deine ursprüngliche Fassung und viele Programme können damit umgehen:
Ich hab erwähnt das ich öffentliche Methoden die verändert werden können nicht mag. Ich kenn mich, ich renn dann kopflos in irgendwas rein.
Genau das ist der Punkt, ich hab den Vorschlag gemacht, weil du damit vermeiden kannst, in solche Stolperfallen zu laufen. Nehmen wir mal an, du machst beim Programmieren einen Fehler und weist einer Eigenschaft einen unerlaubten Wert zu:
$foobar = new FooBar();
$foobar->fuz= 42; // Defekt: Eigentlich wird hier ein String erwartet.
So wie du die Klasse FooBar
implementiert hast, würde der Defekt unbemerkt bleiben. $foobar->foo
wäre danach einfach undefiniert. Das nennt sich auch Fail-Silent-System. Das System bleibt stumm, der Fehler bleibt unerkannt.
Das kann man verbessern, indem man eine Exception in der __set
-Methode wirft, wenn der Typ von $value
kein String ist. Dann fällt der Fehler auf, sobald man den obigen Code ausführt.
Mit PHPDoc-Kommentaren, würde schon dein Editor den Rotstift in der Zeile $foobar->fuz = 42;
ansetzen und dir mitteilen, dass es da einen Typfehler gibt.