致命错误:从无效上下文调用私有MyObject :: __ construct()

时间:2010-01-04 05:53:48

标签: php

在PHP中创建新对象时,我收到以下错误消息:
Fatal error: Call to private MyObject::__construct() from invalid context
我只是创建新对象,不要尝试显式调用构造函数。有谁知道发生了什么事?

3 个答案:

答案 0 :(得分:27)

您的MyObject类具有受保护或私有构造函数,这意味着无法实例化该类。在实例化对象时总是调用__construct()函数,因此尝试执行$x = new MyObject()之类的操作会导致私有构造函数出现致命错误。 (如果没有专门声明__construct()函数,将调用父构造函数。

私有构造函数通常用于Singleton类,以防止对象的直接实例化。如果它不是你构建的类,它可能有一个getInstance()函数(或类似的东西)来返回它自己的实例。

答案 1 :(得分:2)

而不是$x = new MyObject()你可以使用

$x = MyObject::getInstance();

假设MyObjectSingletongetInstance()函数可用。

答案 2 :(得分:2)

对我而言, CLASS 的名称与方法的名称相同 那是私人的...

例如......

class myClass {

   public function __construct() {

   }

   private function myClass() {

   }
}