2015-07-19 2 views
2

У меня есть объект, который имеет HTTP-клиент Guzzle (версия 6) в качестве зависимости. Когда я пытаюсь сериализовать его, используя метод php serialize(), он выдает исключение Serialization of 'Closure' is not allowed. Я думаю, что из двух вариантов здесь:Как сериализовать объект, который зависит от клиента guzzle 6?

а) использовать предыдущую версию жрать и забыть об обновлении до нового одного (не лучший сценария)

б) для выборочной сериализации свойств объекта, пропуская клиент жрать (его добавляет некоторую сложность, но кажется хорошим выбором)

Возможно, я делаю все неправильно, поэтому, пожалуйста, предложите, что бы вы сделали.

UPD: объект является моделью, которая использует клиент Guzzle для получения своих атрибутов из api.

+0

Когда вы сериализуете клиентский php, попробуйте выполнить сериализацию всех объектов, подключенных к этому клиенту. Таким образом, невозможно выполнить сериализацию. Возможное решение: вы можете сериализовать модель без клика. Сохраните только несколько свойств клиента guzzle для будущего восстановления. На unserialize - создайте жужжащий клиент и подключите его к модели вручную. – funivan

ответ

1

В конце концов, я решил реализовать сериализатор и выбрать только полезные атрибуты из моего объекта модели. На самом деле, я счел ненужным хранить http-клиент сериализованным, поскольку у него нет важного состояния, связанного с моделью. Затем, при десериализации, можно снова присоединить клиента жужжания. Для тех, кто имеет дело с одной и той же проблемой, я предлагаю посмотреть документацию по компоненту сериализатора symfony, которая дает представление о том, как она должна работать: http://symfony.com/doc/current/components/serializer.html

Смежные вопросы