几天来我一直在为一个完全奇怪的错误而苦苦挣扎:这是场景(请耐心等待):
我有一个“框架”类,我称之为 F。我有一些扩展 F 的简单类,其中一个我称之为 P。
所以我所拥有的是:
class F {
[...]
protected static $_tabela;
[...]
final public static function _Tabela() {
return static::$_tabela;
}
public static function Consultar() {
echo static::_Tabela();
}
}
class P extends F {
protected static $_tabela = 'produtos';
}
当我打电话时,P::Consultar();
我得到这个对我来说毫无意义的错误:
Fatal error: Undefined class constant 'self::STRING' in [...]/F.inc.php on line X
其中 X 是 _Tabela() 方法的主体。
因此,我尝试更改变量名称($_tabela)。我尝试通过 get_call_class() 保存类名:
$class = get_called_class()
return $class::$_tabela;
但是得到了同样的错误。
另外,错误消息完全没用,我不是要访问类常量,而是要访问类静态属性!
谷歌搜索错误消息也没有给我任何有用的结果。
编辑:谢谢大家的回答!我发现了问题,它与我正在查看的代码无关。原来P类的定义有错误,所以当我尝试调用static::Consultar时,PHP解析了这个类并抱怨错误!