2010-12-06 49 views
1

J'essaie de faire quelque chose comme ça mais je n'y arrive pas.PHP: méthodes statiques abstraites polymorphes

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

merci!

+1

Comment êtes-vous ne pas réussir? – alex

Répondre

6

Il aurait été bien si vous auriez donné une indication quant à la façon dont vous « ne réussissons pas », mais je suppose que vous tomber sur les liaisons statiques et doivent utiliser late static bindings introduit en PHP 5.3.

1

Je suppose peut-être que vous essayez d'instancier un objet de cette classe.

Vous ne pouvez pas . C'est une classe abstract. Sous-classe, puis instancier cela.

7

Vous avez deux problèmes:

  1. fonctions statiques ne peuvent pas être abstact en php plus.
  2. Comme dit précédemment, la liaison statique tardive: comme méthode getName() est définie dans la classe des enfants, vous devez accéder avec statique :: getName() au lieu de l'auto :: getName()