2009-02-20 13 views
17

Estoy usando la clase nativa SOAP en PHP 5, habiendo cambiado de NuSOAP porque la clase nativa es más rápida (y el desarrollo de NuSOAP parece haber cesado). Sin embargo, el PHP 5 SOAP carece de la capacidad de generar WSDL.¿Genera WSDL cuando usa la clase SOAP nativa de PHP?

¿Alguien ha experimentado la generación de WSDL en PHP? Si es así, recomiende su método preferido.

Gracias.

Respuesta

3

Generar un WSDL sobre la marcha no es algo que ocurra muy a menudo, ¡esto generaría algunas preguntas acerca de la estabilidad de su servicio!

Zend Studio puede generar un WSDL a partir de una clase de PHP, y hay algunas otras herramientas similares.

Si es necesario para generar el WSDL dinámicamente, echar un vistazo a la biblioteca Zend Framework: Zend_Soap_AutoDiscover

+0

Zend Soap Autodiscover se mantiene activamente. Lo uso y estoy feliz con eso. –

+2

Ciaran, pienso en los servicios que implementamos en la empresa en la que trabajo. Tenemos una aplicación y servicios bastante buenos y estables, pero a un nuevo socio o uno existente se le exige una nueva funcionalidad que es buena para los dos, por lo que abrir y escribir cosas manualmente no es una buena práctica. El IHMO correcto es aprovechar algún método probado y seguro para confiar cuando ocurran estos escenarios, o si el equipo de TI cambia, por ejemplo ... – Dave

9

Stuart,

Si usted o cualquier otra persona está buscando una solución a este problema aquí es lo que hice .

Primera conseguir este script: http://www.phpclasses.org/browse/download/zip/package/3509/name/php2wsdl-2009-05-15.zip

luego buscar en sus archivos de ejemplo. Después de que yo sólo lo cortó el camino que necesitaba porque estoy usando 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 
} 

Que, su todo hecho. Por cierto, estoy usando SoapServer y SoapClient en php5 +

0

Zend_Soap_AutoDiscover es una buena alternativa a NuSOAP. Pero también puede crear el archivo WSDL desde cero, que puede ser muy complicado y propenso a errores. Para facilitar este proceso, puede usar un IDE para generar el archivo WSDL para sus funciones PHP y pasarlo como un parámetro a su clase PHP SoapServer. Echa un vistazo al tutorial completo sobre How to generate wsdl for php native soap class

Cuestiones relacionadas