Генерация WSDL при использовании собственного класса SOAP PHP? - PullRequest
18 голосов
/ 20 февраля 2009

Я использую собственный класс SOAP в PHP 5, изменив его с NuSOAP, так как собственный класс быстрее (и разработка NuSOAP, похоже, прекратилась). Однако в PHP 5 SOAP отсутствует возможность генерировать WSDL.

У кого-нибудь есть опыт создания WSDL в PHP? Если это так, пожалуйста, порекомендуйте ваш предпочтительный метод.

Спасибо.

Ответы [ 4 ]

9 голосов
/ 12 октября 2010

Стюарт,

Если вы или кто-то еще ищете решение этой проблемы, вот что я сделал.

Сначала получите этот скрипт: 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
 }

Вот оно, все готово. Кстати, я использую SoapServer и SoapClient в php5 +

3 голосов
/ 20 февраля 2009

Генерация WSDL на лету - это не то, что случается очень часто - это может вызвать вопросы о стабильности вашего сервиса!

Zend Studio может сгенерировать WSDL из класса PHP, и есть несколько других подобных инструментов.

Если вам нужно динамически генерировать WSDL, взгляните на библиотеку Zend Framework: Zend_Soap_AutoDiscover

2 голосов
/ 02 апреля 2014

Вы можете попробовать следующие варианты:
- 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)

Первый вариант может быть вашим лучшим вариантом, если лицензия соответствует вашему проекту.

0 голосов
/ 28 марта 2014

Zend_Soap_AutoDiscover - хорошая альтернатива NuSOAP. Но вы также можете создать файл WSDL с нуля, который может быть очень сложным и подверженным ошибкам. Чтобы упростить этот процесс, вы можете использовать IDE, чтобы сгенерировать файл WSDL для ваших функций PHP и передать его в качестве параметра вашему классу PHP SoapServer. Ознакомьтесь с полным руководством по Как сгенерировать wsdl для класса PHP собственного мыла

...