我有一个正在调用的静态函数,它给出了一个奇怪的错误。下面是一个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
?