2010-02-18 57 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"; 
    } 
}