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