При создании нового объекта в PHP появляется следующее сообщение об ошибке:
Fatal error: Call to private MyObject::__construct() from invalid context
Я просто создаю новый объект и не пытаюсь вызвать конструктор явно. Кто-нибудь знает, что происходит?
Класс MyObject имеет защищенный или закрытый конструктор, что означает, что класс не может быть создан. Функции __construct() всегда вызываются при создании экземпляра объекта, поэтому попытка сделать что-то вроде $x = new MyObject() приведет к фатальной ошибке с частной конструкторской функцией. (Если вы специально не объявляете функцию __construct() , будет вызываться родительский конструктор).
Частные конструкторы часто используются в классах Singleton, чтобы предотвратить прямое создание объекта. Если это не класс, который вы создали, он может иметь доступную функцию getInstance() (или что-то подобное) для возврата экземпляра самого себя.
Для меня было то, что имя CLASS было тем же именем, что и один из методов s, который был закрыт …
например…
class myClass { public function __construct() { } private function myClass() { } }
Вместо $x = new MyObject() вы можете использовать
$x = MyObject::getInstance();
предполагая, что MyObject является функцией Singleton и getInstance() .