Mailinglisten-Archive |
Hallo Liste Ich bin gerade dabei eine Anwendung auf PHP5 zu portieren. Dabei stehe ich vor folgendem Problem: Ich habe eine Basisklasse [A] und eine abgeleitete Klasse [B]. In der Klasse [C] wird jetzt versucht eine Instanz der Klasse [B] über ein Singleton-Pattern, welches in Klasse [A] definierte ist, zu erzeugen. Das funktioniert aber nicht, da ich bisher keine Möglichkeit gefunden habe, in Klasse [A] den Klassen-Namen der Klasse [B] zu ermitteln. [A] class A { function singleton () { $className = get_class (); // Funktioniert nicht, da dann [A] instantiiert wird und nicht [B] $className = get_class ( $self ); // Funktioniert nicht, da $self in einer statischen Funtion nicht // definiert ist $foo = debug_backtrace (); $className = $foo [ 0 ][ 'class' ]; // Idee von 'michael at digitalgnosis dot removethis dot com' aus // http://de2.php.net/manual/de/language.oop5.static.php // functioniert nicht, da $foo [ 0 ][ 'class' ] == 'A' $className = $foo [ 1 ][ 'class' ]; // Funktioniert nicht, da $foo [ 1 ][ 'class' ] == 'C' $className = __CLASS__; // Funktioniert nicht, da __CLASS__ == 'A' if ( ( ! array_key_exists ( 'g' . $className, $GLOBALS ) ) || ( ! is_object ( $GLOBALS [ 'g' . $className ] ) ) || ( ! is_a ( $clasName, $GLOBALS [ 'g' . $className ] ) ) ) { $GLOBALS [ 'g' . $className ] = new $className (); } return $GLOBALS [ 'g' . $className ]; } [B] class B extends A { // } [C] class C { $foo = B :: singleton (); } Wer kann mich mal vom Schlauch schubsen? Danke schonmal Andreas -- Andreas Heigl Siemensstrasse 6 61352 Bad Homburg Germany Telefon +49-(0)6172-670-185 Telefax +49-(0)6172-670-181
php::bar PHP Wiki - Listenarchive