私はネイティブSOAP class in PHP 5を使用していますが、ネイティブクラスの方が速いのでNuSOAPから変更しました(そしてNuSOAPの開発は終わったようです)。ただし、PHP 5 SOAPには、WSDLを生成する機能がありません。
PHPでWSDLを生成した経験のある人はいますか?もしそうなら、あなたの好みの方法をお勧めしてください。
ありがとう。
スチュアート、
あなたや他の誰かがこの問題の解決策を探しているなら、これが私がしたことです。
最初にこのスクリプトを取得します: 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を使用しています
その場でWSDLを生成することは、それほど頻繁に発生することではありません。サービスの安定性についていくつかの質問が発生する傾向があります。
ZendStudioはPHPクラスからWSDLを生成でき、他にも同様のツールがいくつかあります。
WSDLを動的に生成する必要がある場合は、Zend Frameworkライブラリを確認してください。 Zend_Soap_AutoDiscover
次のオプションを試すことができます。
- 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ライク)
ライセンスがプロジェクトに適合する場合は、最初のオプションが最適なオプションになる可能性があります。
Zend_Soap_AutoDiscoverは、NuSOAPの優れた代替手段です。ただし、WSDLファイルを最初から作成することもできます。これは非常に複雑でエラーが発生しやすい場合があります。このプロセスを容易にするために、IDEを使用してPHP関数のWSDLファイルを生成し、それをパラメーターとしてPHP SoapServerクラス。 phpネイティブsoapクラスのwsdlを生成する方法 に関する完全なチュートリアルを確認してください。