Пользовательский диспетчер Zend AMF - PullRequest
0 голосов
/ 15 июля 2011

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

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

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

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

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

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

1 Ответ

0 голосов
/ 16 июля 2011

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

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

...