Создание WSDL при использовании PHP-класса SOAP?
Я использую собственный класс SOAP в PHP 5, изменив с NuSOAP, поскольку родной класс быстрее (и, по-видимому, NuSOAP-процесс прекратился). Однако PHP 5 SOAP не имеет возможности генерировать WSDL.
Есть ли опыт генерации WSDL в PHP? Если да, пожалуйста, рекомендуйте свой предпочтительный метод.
Спасибо.
Ответы
Ответ 1
Стюарт,
Если вы или кто-либо еще ищете решение этой проблемы здесь, что я сделал.
Сначала получите это script: 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 +
Ответ 2
Создание WSDL "на лету" - это не то, что происходит очень часто - это может привести к возникновению нескольких вопросов об устойчивости вашего сервиса!
Zend Studio может генерировать WSDL из класса PHP, и есть несколько других подобных инструментов.
Если вам нужно сгенерировать WSDL динамически, взгляните на библиотеку Zend Framework: Zend_Soap_AutoDiscover
Ответ 3
Вы можете попробовать следующие варианты:
- 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)
Первым может быть ваш лучший вариант, если лицензия соответствует вашему проекту.
Ответ 4
Zend_Soap_AutoDiscover - хорошая альтернатива NuSOAP. Но вы также можете создать WSDL файл с нуля, что может быть очень сложным и подверженным ошибкам. Чтобы облегчить этот процесс, вы можете использовать IDE для генерации WSDL файла для ваших функций PHP и передать его в качестве параметра для вашего класса PHP SoapServer. Ознакомьтесь с полным руководством по Как сгенерировать wsdl для родного класса мыла php