Mailinglisten-Archive |
Hallo Albin, Am Mittwoch, 13. Dezember 2006 14:30 schrieb Albin Blaschka: > Hallo, > > ich habe eine allgemeine (Grundsatz-)Frage: > > Ich habe im letzten hsalben Jahr mich mit objektorientierter > Programmierung mit PHP 5 beschäftigt, vorher (seit PHP 4.0.6) war ich > rein prozedural "unterwegs". Ausgelöst haben das vor allem die > objektorientierten Module a la SimpleXML oder DOM... > > Nun zu meiner "konkreten" Frage: > > Ich lege ein Objekt von meiner Klasse an: > $myObj = new myClass(); > > ok. ;-) > > Jetzt ist ein Parameter für die weitere Ausführung notwendig, jetzt > entweder über "diverse" Methoden gesetzt werden können, also z. B. > > $myObj->load($someStuff); > > so weit, so gut... > > Eigentlich ist es jedoch auch möglich beides, aufrufen und Parameter > setzen, zu kombinieren: > > $myObj = new myClass($someStuff); > > Was spricht jetzt für die eine, was für die andere Variante? gute Frage. Die stellt sich - glaube ich - jedem, der anfängt sich mit OOP zu beschäftigen. Mich beschäftigt sie eigentlich sogar immer mal wieder... Mit der Zeit bin ich für mich zu der Erkenntnis gekommen, daß man nur die Eigenschaften über den Konstruktor setzen sollte, die nach der Erstellung des Objekts nicht mehr anders gesetzt werden dürfen, insbesondere um Dateninkonsistenzen zu vermeiden. Also wenn ich z.B. für ein Produkt mit einer eindeutigen Produkt-ID ein Objekt erstelle, dann sollte es nicht einfach möglich sein, diese eindeutige ID nachträglich anders zu setzen, während die übrigen Eingeschaften des Objekts unverändert verbleiben. Daher sollte aus meiner Sicht hier die ID über den Konstruktor gesetzt werden und eben keine Setter-Methode für die ID angeboten werden. So ist nämlich ausgeschlossen, daß die ID nachträglich verändert werden kann. Würdest Du die ID erst nach der Erstellung des Objekts setzen, bräuchtest Du hingegen eine Setter-Methode, die wiederum auch später noch benutzt werden könnte. Ich hoffe, es wird deutlich, was ich meine. :-) Das sind meine Überlegungen. Ich stelle sie einfach mal so zur Diskussion und bin gespannt, was die anderen zu dem Thema denken. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive