使用PHP的本机SOAP类时生成WSDL?

时间:2009-02-20 09:40:55

标签: php soap wsdl

我正在使用PHP 5中的本机SOAP类,从NuSOAP更改为本机类更快(并且NuSOAP开发似乎已经停止)。但是,PHP 5 SOAP缺乏生成WSDL的能力。

有没有经验在PHP中生成WSDL?如果是这样,请推荐您的首选方法。

感谢。

4 个答案:

答案 0 :(得分:9)

司徒,

如果您或其他任何人正在寻找这个问题的解决方案,那就是我所做的。

首先获取此脚本:http://www.phpclasses.org/browse/download/zip/package/3509/name/php2wsdl-2009-05-15.zip

然后查看其示例文件。之后我就按照我需要的方式切片,因为我正在使用codeigniter:

function wsdl(){
  error_reporting(0);
  require_once(APPPATH."/libraries/WSDLCreator.php"); //Path to the library
  $test = new WSDLCreator("Webservice", $this->site."/wsdl");
  //$test->includeMethodsDocumentation(false);

  $test->addFile(APPPATH."/controllers/gds.php");

  $test->addURLToClass("GDS", $this->site);

  $test->ignoreMethod(array("GDS"=>"GDS"));
  $test->ignoreMethod(array("GDS"=>"accessCheck"));

  $test->createWSDL();

  $test->printWSDL(true); // print with headers
 }

它,你的一切都完成了。 顺便说一句,我在php5 +中使用SoapServer和SoapClient

答案 1 :(得分:3)

动态生成WSDL并不是经常发生的事情 - 它会引发一些关于服务稳定性的问题!

Zend Studio可以从PHP类生成WSDL,还有一些其他类似的工具。

如果确实需要动态生成WSDL,请查看Zend Framework库:Zend_Soap_AutoDiscover

答案 2 :(得分:2)

您可以尝试以下选项:
  - https://code.google.com/p/php-wsdl-creator/(GPLv3)
  - https://github.com/piotrooo/wsdl-creator/(GPLv3)
- http://www.phpclasses.org/package/3509-PHP-Generate-WSDL-from-PHP-classes-code.html(BSD喜欢)

如果许可适合您的项目,第一个可能是您的最佳选择。

答案 3 :(得分:0)

Zend_Soap_AutoDiscover是NuSOAP的一个很好的替代品。但是,您也可以从头开始创建WSDL文件,这可能非常复杂且容易出错。为了简化此过程,您可以使用IDE为PHP函数生成WSDL文件,并将其作为参数传递给PHP SoapServer类。查看How to generate wsdl for php native soap class

上的完整教程
相关问题