php命名空间内的SoapClient类映射 - 找不到soapfault类

时间:2013-08-30 10:57:52

标签: php namespaces

我使用 easyWsdl2PHP 生成了一组php类,它们工作正常,但是当我将生成的类放在像这样的命名空间中时......

namespace myCompany\ourService

然后最初调用此代码时...

$params = array("classmap"=>self::$classmap,"trace" => true,"exceptions" => true);     
$this->soapClient = new SoapClient($url,$params);

我收到此错误

  

未找到类'myCompany \ ourService \ SoapClient

我通过调用new \SoapClient($url...来修复(注意开头的反​​斜杠,转义命名空间),但现在基本上它抱怨它找不到'响应'对象,那就是我的请求放在' SALE'对象并传递给soap调用,错误就是这样

  

未捕获的SoapFault异常:[客户]类'SALEResponse'未找到

如何在我的代码中正确使用php命名空间,如何在php中使用Soap正确使用名称空间?我有两个非常相似的服务需要连接,包括'sale'方法和许多其他通常命名的不兼容的元素,因此将它们放在php命名空间中似乎是一个很好的解决方案,因为代码生成,我可以将每个Sale重命名为Service1_SaleService2_Sale,但这远非理想。有什么帮助吗?

1 个答案:

答案 0 :(得分:4)

我找到了解决方案:

private static $classmap = array('SALE'=>'ourCompany\ourService\SALE'
,'SALEREQUEST_V1'=>'ourCompany\ourService\SALEREQUEST_V1'
,'AUTHORIZATION_V1'=>'ourCompany\ourService\AUTHORIZATION_V1'
,'RECEIPTREQUEST_V1'=>'ourCompany\ourService\RECEIPTREQUEST_V1'
,'SALEResponse'=>'ourCompany\ourService\SALEResponse'
);

我添加了ourCompany\ourService\以包含我正在使用的命名空间。