2010-02-18 31 views
1

我试图获取扩展类的常量的值,但是在抽象类的方法中。像这样:在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(); 

但是,这会导致致命错误。有没有办法做到这一点?

回答

2

这是不可能的。一种可能的解决方案是创建一个虚拟方法来返回子类中的期望值,即

abstract class Foo { 
    protected abstract function getBar(); 

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

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