Mailinglisten-Archive |
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