При создании нового объекта в 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()
.