如何使用wsdl2php为PHP Web服务生成帮助程序类和存根代码?

时间:2010-08-12 09:59:15

标签: php wcf wsdl code-generation stub

我有一个由WCF生成的WSDL,现在应该使用这个WSDL来创建一个PHP Web服务。我的WSDL包含自定义.NET类(complexType)的映射,我需要一个PHP WSDL工具,它可以生成等效的PHP类和存根代码(服务器端生成)。

我读到wsdl2php是正确的工具,所以我在地址上试了一下: (http://labs.wso2.org/wsf/php/wsdl2phptool.php

部分工作是创建存根代码,但它没有创建任何辅助类(函数参数似乎是anyType类型,并且每个函数只生成一个参数)。我还有脚本版本,我可以在Windows中使用以下类型的命令运行:

php wsdl2php.php -s http://My.Server.com/MyWCFService/MyWCFService.svc?wsdl> MyWebService.php

但由于某种原因它似乎不起作用,因为它输出一个空文件。我不是PHP专家,因为我是.NET开发人员,但我需要测试我们的WSDL如何与PHP Web服务一起工作(只是为了看到可以从我们的WSDL生成PHP代码,就像在.NET中一样) )。

如果您能给我一个为PHP Web服务生成帮助程序类和存根代码的简单示例,我将不胜感激。

谢谢! :)

2 个答案:

答案 0 :(得分:0)

找到解决方案!除了使用wsdl2php的存根代码之外,为了生成辅助类,您将需要一个WSDL文件。 wsdl2php的当前版本(2.1.0)难以理解WCF生成的WSDL。这是由于WCF WSDL中使用的导入标记(模式已导入到wsdl文档中,而wsdl2php不喜欢这样)

在使用WCFExtras创建单个WCF WSDL后,我设法生成了辅助类!

http://wcfextras.codeplex.com/

http://weblogs.asp.net/pglavich/archive/2010/03/16/making-wcf-output-a-single-wsdl-file-for-interop-purposes.aspx”(首先阅读此内容,因为正确指定名称空间非常重要,否则您将遇到WCFExtras的问题)

答案 1 :(得分:0)

您还可以使用T4模板从Service实现生成ServiceProxies和DataContract类。我一直在为我的项目开发它们,它们在GitHub上发布,包括样本:

https://github.com/schaermu/wcf-phpclient-t4

以防您在.NET解决方案中需要代理生成逻辑。