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