Proof и объект в полезной нагрузке события
В чем причина только скалярных значений и значений массива в полезной нагрузке? Может ли он быть более гибким с объектом, который имеет метод toString или toArray? Я бы использовал отправленное событие, которое содержит полный ValueObject или подобную вещь, тогда я могу построить ReadModel без ненужного обращения к хранилищу.
2 ответа
Да, это может быть более гибким, но вы должны реализовать собственное базовое сообщение для интерфейса сообщений: https://github.com/prooph/common/blob/master/docs/messaging.md#custom-messages
Причину, по которой реализация сообщений Prooph по умолчанию допускает только скаляры и массивы, также можно найти в документации: https://github.com/prooph/common/blob/master/docs/messaging.md#payload
Поскольку полезная нагрузка prooph / common 3.x больше не является частью объекта сообщения, а вместо этого требуются методы для получения / установки полезной нагрузки. Полезная нагрузка - это данные, передаваемые сообщением. Он должен состоять только из скалярных типов и вложенных массивов, чтобы его можно было легко json_encoded и json_decoded. Реализаторам не нужно управлять свойством полезной нагрузки, но общедоступная функция payload() должна возвращать данные сообщения. Вместо этого метод защищенной функции setPayload(array $payload) должен восстанавливать данные сообщения из данного массива полезной нагрузки.
Вы также можете следить за обсуждением этой темы на github: https://github.com/prooph/common/issues/54