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


Fatal error: Call to private MyObject::__construct() from invalid context

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


您的MyObject类有一个受保护的或私有的构造函数,这意味着类不能被实例化。当一个对象被实例化时,总是调用__construct()函数,因此尝试执行$x = new MyObject()之类的操作将导致私有构造函数出现致命错误。(如果没有特别声明__construct()函数,将调用父构造函数)。

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


对我来说,就是类的名称与其中一个方法的名称相同那是私人的…

例如。。。

1
2
3
4
5
6
7
8
9
10
class myClass {

   public function __construct() {

   }

   private function myClass() {

   }
}


你可以用$x = new MyObject()代替$x = new MyObject()

1
$x = MyObject::getInstance();

假设MyObject是一个单体,getInstance()函数可用。