web-dev-qa-db-ja.com

PHPのネイティブSOAPクラスを使用するときにWSDLを生成しますか?

私はネイティブSOAP class in PHP 5を使用していますが、ネイティブクラスの方が速いのでNuSOAPから変更しました(そしてNuSOAPの開発は終わったようです)。ただし、PHP 5 SOAPには、WSDLを生成する機能がありません。

PHPでWSDLを生成した経験のある人はいますか?もしそうなら、あなたの好みの方法をお勧めしてください。

ありがとう。

18
Stuart

スチュアート、

あなたや他の誰かがこの問題の解決策を探しているなら、これが私がしたことです。

最初にこのスクリプトを取得します: 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を使用しています

9
daynier

その場でWSDLを生成することは、それほど頻繁に発生することではありません。サービスの安定性についていくつかの質問が発生する傾向があります。

ZendStudioはPHPクラスからWSDLを生成でき、他にも同様のツールがいくつかあります。

WSDLを動的に生成する必要がある場合は、Zend Frameworkライブラリを確認してください。 Zend_Soap_AutoDiscover

3
Ciaran McNulty

次のオプションを試すことができます。
- 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ライク)

ライセンスがプロジェクトに適合する場合は、最初のオプションが最適なオプションになる可能性があります。

2
Pablius

Zend_Soap_AutoDiscoverは、NuSOAPの優れた代替手段です。ただし、WSDLファイルを最初から作成することもできます。これは非常に複雑でエラーが発生しやすい場合があります。このプロセスを容易にするために、IDEを使用してPHP関数のWSDLファイルを生成し、それをパラメーターとしてPHP SoapServerクラス。 phpネイティブsoapクラスのwsdlを生成する方法 に関する完全なチュートリアルを確認してください。

0
Osaro Gabriel