Mailinglisten-Archive |
Hallo Hannes, Am Montag, 10. Juli 2006 19:35 schrieb Hannes H.: > Guten Abend :-) > > Ausgangssituation: Ich habe eine Basis-Klasse, in der Datenbank-, > Error- und Session-Handling implementiert sind, und von dieser werden > diverse andere Klassen abgeleitet. Abstrakt beschrieben, sieht das so > aus: > > abstract class A { > protected __construct() { > /* Datenbank-, Error-, Sessionhandling */ > } > } > > class B extends A { > protected __construct() { > parent::__construct(); > } > } > > class C extends A { > protected __constrcut() { > parent::__construct(); > } > } > > Folgendes Problem stellt sich: Mit einer einzigen Ausnahme (nämlich > bei Instatnzen der Klasse C) soll der Konstruktor der Basisklasse > komplett abgearbeitet werden. Bei Instanzen der Klasse C sollen Teile > nicht ausgeführt werden, aber der Rest vom Konstruktor schon. Bietet > PHP5 eine Möglichkeit, in parent::__construct() zu ermitteln, welche > abgeleitete Klasse intanziert wurde? Soweit ich das sehe, ist die > einzige Möglichkeit, dem Konstruktor einen Parameter mitzugeben, der > dann in der Basisklasse ausgewertet wird - aber irgend wie macht das > auf mich keinen all zu sauberen Eindruck. > > Irgend welche Ideen, liebe Liste? Du könntest hingehen und den Code im Konstruktor der Klasse A in zwei Teile aufteilen, nämlich den Teil, der in jeder Klasse ausgeführt werden soll, und den Teil, der in Klasse C nicht ausgeführt werden soll. Beide Teile lagerst Du jeweils in eine eigene protected-Funktion aus. Dann schreibst Du in jeder Klasse einen eigenen Konstruktor, der entweder beide oder nur eine der beiden Funktionen aufruft. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive