2010-02-18 11 views
1

J'essaie d'obtenir la valeur d'une constante d'une classe étendue, mais dans une méthode de la classe abstraite. Comme ceci:Accéder à la constante de classe à partir de la méthode abstraite en PHP5

 
    abstract class Foo { 
     public function method() { 
      echo self::constant; 
     } 
    } 

    class Bar extends Foo { 
     const constant = "I am a constant"; 
    } 

    $bar = new Bar(); 
    $bar->method(); 

Il en résulte cependant une erreur fatale. Est-ce qu'il y a un moyen de faire ça?

Répondre

2

Ceci n'est pas possible. Une solution possible consisterait à créer une méthode virtuelle qui renvoie la valeur souhaitée dans les sous-classes, c'est-à-dire

abstract class Foo { 
    protected abstract function getBar(); 

    public function method() { 
    return $this->getBar(); 
    } 
} 

class Bar extends Foo { 
    protected function getBar() { 
    return "bar"; 
    } 
}