phpbar.de logo

Mailinglisten-Archive

[php] Neues Objekt mit variabler Anzahl Argumente

[php] Neues Objekt mit variabler Anzahl Argumente

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Sam Aug 5 08:21:55 CEST 2006


Hallo Raffael,

Am Samstag, 5. August 2006 03:54 schrieb Rafael Krysciak:
> Ich würde die Klassen so umschreiben dass sie generell ein Parameter
> als array entgegen nehmen.
> Dann würde deine function so aussehen:
>
> function load ($class, $args = array())
> {
>   return new $class($args);
> }
>
> Was meinem die andern?

also den Tip habe ich auch mal gegeben. Ich habe das sogar einmal selbst 
komplett so umgesetzt. Davon bin ich allerdings abgekommen. Ich 
verwende jetzt für jede öffentliche Objekteigenschaft eine Setter- und 
Getter-Methode.

Ich übergebe nichts mehr in einem variablen Array.

Meine Gründe:

1. Wenn man Objekteigenschaften setzt, müssen die gesetzten Werte 
ohnehin auf Gültigkeit (Typ, Wertebereich...) überprüft werden. 
Übergebe ich die Werte, wie von Dir vorgeschlagen und von mir einmal 
bis zum Ende durchexerziert, dann muß ich die Gültigkeitsprüfung 
natürlich auch hier durchführen und ggf. noch weitere gewünschte 
Operationen. Klassenintern gewinne ich also überhaupt nichts.

2. Ich verliere aber intern an Übersichtlichkeit, weil ich die Prüfung 
und Verarbeitung der übergebenen Werte an der Schnittstelle 
dynamisieren muß. Der Code in der betreffenden Klasse wird nämlich 
komplexer und komplizierter, weil die Flexibilität nach außen hin nach 
innen gemappt werden muß.

3. Aber auch das Skript, welches die Objekteigenschaften setzt, wird 
nach meiner Erfahrung durch die Übergabe eines Arrays nicht 
übersichtlicher gegenüber der Verwendung von Setter-Methoden. Eher im 
Gegenteil.

4. Die Verwendung der benötigten Setter-Methoden einer Klasse ist 
genauso flexibel wie die Verwendung eines variablen assoziativen 
Arrays.

5. Abschließend noch ein eher PHP-spezifisches, auf PHP5 
zugeschnittenes, Argument: Wenn Du einfach einen Array an den 
Konstruktor übergibst, der die zu setzenden Werte der 
Objekteigenschaften enthält, dann beraubst Du Dich der Möglichkeit, das 
Type Hinting von PHP5 für die Übergabe der Werte zu nutzen:
http://www.php.net/manual/en/language.oop5.typehinting.php
Das hat allerdings die kleine Einschränkung, daß es nur für Arrays und 
Objekte anwendbar ist... Ist also nicht unbedingt das Knallerargument, 
aber auch zu beachten.


Viele Grüße

Lutz

php::bar PHP Wiki   -   Listenarchive