我正在使用PHP 5中的本机SOAP类,从NuSOAP更改为本机类更快(并且NuSOAP开发似乎已经停止)。但是,PHP 5 SOAP缺乏生成WSDL的能力。
有没有经验在PHP中生成WSDL?如果是这样,请推荐您的首选方法。
感谢。
答案 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
上的完整教程