我有一个自定义类称为Error
,我自动加载之前的任何其他。在我的自定义类,我有一个构造函数和一个单身Get函数是这样的:PHP7:静态类功能无法调用/看到,直到类实例
class Error
{
// Singleton object. Leave $me alone.
private static $me;
public $errors; // Array of errors
public $style; // CSS rules to apply to error elements
private function __construct($style = "border:1px solid red;")
{
$this->errors = array();
$this->style = $style;
}
// Get Singleton object
public static function getError()
{
if(is_null(self::$me))
self::$me = new Error();
return self::$me;
}
//...
}
在我的主人包括,我一直准备这个自定义类的单一核心逻辑前:
$Error = Error::getError();
然而,在PHP 7这是现在给我的错误:
Fatal error: Uncaught Error: Call to undefined method Error::getError()
你能帮我明白为什么不工作了?我试过这个,而不是检查Error类是否被加载在所有,它的工作(并调用构造函数):
$Error = new Error();
不知怎的,我不能调用静态类的功能,除非我有实例化了这个类。如果这真的是php7的改变,这将打破我拥有的许多其他逻辑。
PHP7有一个内置的'Error'类。您可能遇到命名空间错误。您的'Error'类是否存在于自定义命名空间中? http://php.net/manual/en/class.error.php –
如果您可以永久升级到PHP 7(您的代码不再需要在5.x下运行),也许您可以采用内部'错误'类代替你自己的。 –
@MichaelBerkowski谢谢,这似乎是最可能的原因,多么不幸的冲突。幸运的是,这对我来说很简单,因为只有一个地方为我的Error类调用静态初始化函数。我会检查这是否是原因。随意添加“内置”命名空间评论作为答案。如果这让我解决了这个问题,我会标记它。 – Tiago