使用Zend_AMF时是否可以使用自定义调度程序?
我知道我可以将类名或对象传递给Zend_AMF的setClass()。
但是,当我将对象传递给setClass时,它似乎不存储该对象的副本。相反,它可以解决类名,然后实例化对象本身的副本。
这是一个问题,因为我使用yadif依赖注入容器。应该使用构造函数依赖项和/或属性依赖项来实例化对象。
由于Zend_Amf调度程序完成了所有实例化,我无法将构造函数依赖项和其他依赖项注入到我的对象中。
如果有人制定了如何在不触及Zend_AMF中的任何代码的情况下克服这个问题的策略,那就太棒了:)
答案 0 :(得分:0)
解决方案是基本上围绕Zend_Amf构建一个包装器。它的编写方式意味着我必须复制句柄和_handle()方法中的大部分代码。然后我不得不修改一些被调用的方法来指向我创建的Zend_Amf实例。
最后,调度已更改,以便调用我自己的调度程序,并返回结果。
显然不是最优雅的解决方案,但希望他们将在未来重新设计Zend_AMF以使其更具可扩展性并允许我们更容易地接触它。
目前,我仍然可以轻松地将Zend_AMF的更新版本放入我的“vendors”文件夹,而无需修改任何代码。