Кто-нибудь знает, как это работает?
Это работает при десериализации объектов.Десериализация в PHP не позволяет вызывать конструктор, поскольку сериализованный объект уже создан.
$className = 'stdClass'; # set classname here $serialized = sprintf('O:%d:"%s":0:{}', strlen($className), $className); $object = unserialize($serialized);
Подробнее см.статья: Доктрина 2: Верните мне моего конструктора