phpbar.de logo

Mailinglisten-Archive

[php] Objekt mit Parameter aufrufen vs. "setter" - Methoden

[php] Objekt mit Parameter aufrufen vs. "setter" - Methoden

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mit Dez 13 16:08:10 CET 2006


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