Пользовательский диспетчер Zend AMF

Можно ли использовать собственный диспетчер при использовании Zend_AMF?

Я знаю, что могу передать имя класса или объект в setClass() для Zend_AMF.

Однако, когда я передаю объект в setClass, кажется, что он не хранит копию этого объекта. Вместо этого он обрабатывает имя класса, а затем создает копию самого объекта.

Это проблема, так как я использую контейнер ввода зависимостей yadif. Объекты должны быть созданы с зависимостями конструктора и / или зависимостями свойств.

Поскольку диспетчер Zend_Amf выполняет все операции создания экземпляров, я не могу внедрить зависимости конструктора и другие зависимости в мои объекты.

Если у кого-то есть стратегия относительно того, как я могу преодолеть это, не касаясь какого-либо кода в Zend_AMF, это было бы здорово:)

1 ответ

Решение

Решение заключается в том, чтобы создать оболочку вокруг Zend_Amf. То, как это написано, означает, что мне пришлось скопировать большую часть кода в методы handle и _handle(). Затем мне пришлось изменить некоторые вызванные методы, чтобы они указывали на экземпляр Zend_Amf, который я создал.

Наконец, диспетчеризация была изменена, так что мой собственный диспетчер был вызван, и результаты вернулись.

Очевидно, что это не самое элегантное решение, но мы надеемся, что в будущем они переработают Zend_AMF, чтобы сделать его немного более расширяемым и позволить нам легко подключиться к нему.

В настоящий момент я все еще могу легко вставить обновленную версию Zend_AMF в мою папку "vendors" без изменения какого-либо кода.

Другие вопросы по тегам