Сериализация объекта PHP (Doctrine Query) - PullRequest
1 голос
/ 11 ноября 2010

Я пытаюсь сериализовать объект Doctrine_query в Symfony:

var_dump(serialize($this->pager->getQuery()));

Результат:

string(2) "N;"

Что я делаю не так?

1 Ответ

2 голосов
/ 17 июля 2011

Вы не можете сериализовать каждый объект в PHP. Сами объекты - реализуя интерфейс Serializeable Руководство по PHP - могут защитить себя от сериализации, например.

Они тогда возвращают значение NULL (или не возвращают ничего, что тогда будет NULL в PHP). И это именно содержимое вашей сериализованной строки: сериализованная NULL (N;).

И есть даже некоторые встроенные классы, которые идут еще дальше. Но это также относится и к пользовательским классам и встроенным классам: некоторые из них недоступны для сериализации.


Один пример встроенного класса, который нельзя сериализовать в PHP, - это DOMDocument, однако можно добавить функциональность, как показывает следующий вопрос:

...