我第一次在通过Zend_Soap提供web服务的应用程序中使用PHP中的名称空间,并且遇到了自动发现功能的问题。我的代码是这样的:
$autodiscoverObj = new Zend_Soap_AutoDiscover();
$autodiscoverObj->setClass('My\\Namespace\\MyClass');我收到了这样的错误,"Zend_Soap_Wsdl_Exception:无法添加不是对象的复杂类型MyClass,或者找不到类“。
如果我省略了setClass()值的名称空间部分,如下所示:
$autodiscoverObj->setClass('MyClass');我得到"Zend_Server_Reflection_Exception:传递给attachClass()的无效类或对象“,所以看起来像我这样包含名称空间是正确的。
在尝试修复WSDL异常时,我注意到,无论我如何在setClass()方法中引用我的类,Zend框架都会将类传递给我的自动加载函数sans命名空间。再深入一点,我看到框架中有一系列方法,从setClass()本身开始,它们有一个可选的名称空间参数,但不使用它(它们甚至被标记为“未使用”)。
我的下一个想法是使用setClassmap(),但是,尽管在Zend_Soap_Server类中可以使用它,但在Zend_Soap_AutoDiscover类中不能使用它,因为它是一个明确的bug that's already been filed by someone else。
Zend框架,特别是same的SOAP组件,是不是与名称空间不兼容?如果不是,如何创建使用其他命名空间中的类的SOAP服务?
版本信息:
PHP: 5.3.0 Zend Framework: 1.9.8
发布于 2010-09-22 03:27:01
Zend Framework1.x不支持PHP5.3的名称空间。您将不得不等待Zend Framework2,或者不为Soap服务类使用名称空间。
https://stackoverflow.com/questions/2915740
复制相似问题