Пользовательский диспетчер 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" без изменения какого-либо кода.