我有一個靜態函數被調用,這是一個奇怪的錯誤。下面是PHP代碼的示例:PHP後期靜態綁定引用調用類
class foo {
public $stat;
public function __construct() {
$this->stat = stat::isValid('two');
}
}
class stat {
protected static $invalidNumbers = array('one', 'two');
function isValid($number) {
return in_array($number, static::$invalidNumbers);
}
}
$foo = new foo();
var_dump($foo->stat);
該代碼產生以下錯誤:
Fatal error: Access to undeclared static property: foo::$invalidNumbers
但是改變static::
到self::
使得像預期的代碼。我的印象是,在這種情況下使用static::
應該工作。
爲什麼使用static
發生此錯誤?
好的答案!確實如此,當你聲明'foo :: invalidNumbers'時,這些代碼正在工作。雖然這是完全有道理的,但我之前並沒有意識到這一點。 – hek2mgl 2013-04-25 20:45:09