我第一次尝试在项目中使用依赖注入容器,但我刚刚发现了一个我不知道如何解决的问题。
该项目提供了一个 SOAP Web 服务,它是在 Zend Framework 的 SOAP 组件之上实现的。其工作方式是定义一个充当服务的类,创建 Zend_Soap_AutoDiscover 或 Zend_Soap_Server 类(适用于 WSDL 或类本身),最后,通过 ZF 传递服务类的名称构造函数或通过 setClass 方法。例如:
class MyService {}
$autodiscoveryObj = new Zend_Soap_AutoDiscover();
$autodiscoveryObj->setClass('MyService');
...
问题在于最后一步。我的 DI 容器可以创建一个服务对象并将所有必需的依赖项注入其中。如果我在自己的代码中需要一个实例,那很好。但是,b/c 您只是将类的名称传递给 ZF,而您自己并没有实际实例化它,它没有通过容器正确实例化,因此它的依赖项永远不会被注入。此外,我认为我不能使用任何类型的包装类,因为 ZF 在类上使用反射。
处理这个问题的最佳方法是什么?