Eddie: abstract class/static method ==> Vererbung klappt nicht

Beitrag lesen

Hallo dedlfix,

echo sub->test();

Äh, ja klar, Schwachsinn.

Vermutlich mit Late Static Bindings. Probieren kann ich es nicht, denn das gibt es erst ab PHP-Version 5.3, was erst zwischen Mitte September und Mitte Oktober erscheinen soll.

Ok, perfekt, danke!

Bis dahin hab ich's ganz fies gelöst:

   abstract class super  
    {  
        static private $x = "Klappt nicht!!!";  
  
        static public function doWhatYouDo($str_caller)  
        {  
            return eval('return '.$str_caller.'::$x;');  
        }  
    }  
  
    class sub extends super  
    {  
        static private $x = "Hallo Welt";  
  
        static public function test()  
        {  
            // Vererbung funktioniert leider mit static NOCH nicht  
            // Abhilfe: "Late static bindings" ab PHP 5.3  
            // ==> http://de.php.net/manual/en/language.oop5.late-static-bindings.php  
            return parent::doWhatYouDo(__CLASS__);  
        }  
    }  
  
    echo sub::test();

Nunja, es funktioniert...
Eddie

--
Old men and far travelers may lie with authority.