phpbar.de logo

Mailinglisten-Archive

[php] PHP5: Erkennen ob Klasse abgeleitet wurde

[php] PHP5: Erkennen ob Klasse abgeleitet wurde

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Jul 10 21:29:42 CEST 2006


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