如何使用Zend_Soap_AutoDiscover进行依赖注入

时间:2011-11-18 22:29:51

标签: php zend-framework dependency-injection zend-soap

我在项目中第一次尝试使用依赖注入容器,但我发现了一个我不确定如何解决的问题。

该项目提供了一个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在类上使用反射。

处理此问题的最佳方法是什么?

1 个答案:

答案 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)
相关问题