我在项目中第一次尝试使用依赖注入容器,但我发现了一个我不确定如何解决的问题。
该项目提供了一个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在类上使用反射。
处理此问题的最佳方法是什么?
答案 0 :(得分:0)
在Zend_Soap_Server中,您可以像SoapServer一样附加/设置对象
/**
* Attach an object to a server
*
* Accepts an instanciated object to use when handling requests.
*
* @param object $object
* @return Zend_Soap_Server
*/
public function setObject($object)