18

我在 PHP 5 中使用本机 SOAP 类,由于本机类更快(并且 NuSOAP 开发似乎已经停止),因此已从 NuSOAP 更改。然而,PHP 5 SOAP 缺乏生成 WSDL 的能力。

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

谢谢。

4

4 回答 4

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

于 2010-10-12T15:23:12.623 回答
3

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

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

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

于 2009-02-20T12:42:32.097 回答
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)

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

于 2014-04-01T21:09:06.813 回答
0

Zend_Soap_AutoDiscover 是 NuSOAP 的一个很好的替代品。但是,您也可以从头开始创建 WSDL 文件,这可能非常复杂且容易出错。为了简化此过程,您可以使用 IDE 为您的 PHP 函数生成 WSDL 文件,并将其作为参数传递给您的 PHP SoapServer 类。查看有关如何为 php 本机肥皂类生成 wsdl的完整教程

于 2014-03-28T12:55:48.670 回答