Sven Rautenberg: Klassenname von abgeleiteter Klasse in statischer Methode

Beitrag lesen

Moin!

Wenn ich mal unprofessionell (mit PHP 5 Objekten habe ich noch nicht zu tun gehabt) da reinkritzeln darf:

<?php

abstract class Foo {
   public final static function getClassname() {
      return get_class();
   }
}

class Bar1 extends Foo {
  function getClassname() {
    return "Bar1";
  }
}

class Bar2 extends Foo {}
  function getClassname() {
    return "Bar2";
  }
}

echo Bar1::getClassname();

?>


>   
> Ich möchte von der abstrakten Klasse Foo mehrere konkrete Klassen wie z.B. Bar1 ableiten. In der Klasse Foo soll später eine Fabrik dann über den Aufruf Bar1::getInstance() ein Objekt der Klasse Bar1 zurückgeben. Um dieses zu tun, muss allerdings die statische Methode Foo::getInstance() wissen, mittels welcher Klasse sie aufgerufen wurde.  
  
Alternativ kann natürlich in jeder abgeleiteten Klasse auch eine lokale Fabrikmethode stehen, die ihrerseits die zentrale Fabrikmethode mit dem passenden Parameter aufruft.  
  
 - Sven Rautenberg

-- 
My sssignature, my preciousssss!