2010-12-06 13 views
1

Ich versuche, so etwas zu tun, aber es gelingt mir nicht.PHP: polymorphe abstrakte statische Methoden

abstract class Animal 
{ 
    abstract static function getName(); 
    static function sayName() { echo self::getName(); } 
} 

danke!

+1

Wie geht es dir nicht erfolgreich? – alex

Antwort

6

Es wäre schön gewesen, wenn Sie einen Hinweis auf gegeben hätte, wie Sie „gelingt es nicht,“ aber ich nehme an, Sie sind zu stolpern über statische Bindungen und müssen late static bindings in PHP 5.3 eingeführt verwenden.

1

Meine Vermutung ist vielleicht, Sie versuchen, ein Objekt aus dieser Klasse zu instanziieren.

Sie kann nicht. Es ist eine abstract Klasse. Unterklasse es und instanziiere das dann.

7

Sie haben zwei Probleme:

  1. statische Funktionen nicht mehr in php abstact sein kann.
  2. Wie gesagt, späte statische Bindung: als Methode getName() in Kindklasse definiert ist, müssen Sie es mit statischen Zugriff :: getName() anstelle von self :: getName()