Я использую собственный класс SOAP в PHP 5, изменившись с NuSOAP, поскольку родной класс работает быстрее (и, по-видимому, развитие NuSOAP прекратилось). Однако PHP SOAP не обладает способностью генерировать WSDL.
Есть ли опыт генерации WSDL в PHP? Если да, пожалуйста, рекомендуйте свой предпочтительный метод.
Благодарю.
Стюарт,
Если вы или кто-либо еще ищете решение этой проблемы, вот что я сделал.
Сначала получите этот скрипт: 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 +
Создание WSDL «на лету» – это не то, что происходит очень часто – это, как правило, вызывает несколько вопросов об устойчивости вашего сервиса!
Zend Studio может генерировать WSDL из класса PHP, и есть несколько других подобных инструментов.
Если вам нужно генерировать 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 для генерации WSDL-файла для ваших функций PHP и передать его в качестве параметра для вашего класса PHP SoapServer. Ознакомьтесь с полным руководством по созданию wsdl для родного класса мыла php