Sto usando la class SOAP nativa in PHP 5, dopo essere cambiata da NuSOAP in quanto la class nativa è più veloce (e lo sviluppo di NuSOAP sembra essere cessato). Tuttavia, il SOAP di PHP 5 non ha la capacità di generare WSDL.
Qualcuno ha esperienza nel generare WSDL in PHP? In tal caso, si prega di raccomandare il metodo preferito.
Grazie.
Stuart,
Se tu o qualcun altro state cercando una soluzione a questo problema, ecco cosa ho fatto.
Per prima cosa prendi questo script: http://www.phpclasss.org/browse/download/zip/package/3509/name/php2wsdl-2009-05-15.zip
Quindi guarda i suoi file di esempio. Dopo di che l'ho solo tagliato nel modo in cui mi serviva perché sto usando il 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(arrays("GDS"=>"GDS")); $test->ignoreMethod(arrays("GDS"=>"accessCheck")); $test->createWSDL(); $test->printWSDL(true); // print with headers }
Che, tutto fatto. A proposito, sto usando SoapServer e SoapClient in php5 +
Generare un WSDL al volo non è qualcosa che accade molto spesso – tenderebbe a sollevare alcune domande sulla stabilità del tuo servizio!
Zend Studio può generare un WSDL da una class PHP, e ci sono alcuni altri strumenti simili.
Se hai bisogno di generare il WSDL in modo dinamico, dai un'occhiata alla libreria Zend Framework: Zend_Soap_AutoDiscover
Puoi provare queste opzioni:
– https://code.google.com/p/php-wsdl-creator/ (GPLv3)
– https://github.com/piotrooo/wsdl-creator/ (GPLv3)
– http://www.phpclasss.org/package/3509-PHP-Generate-WSDL-from-PHP-classs-code.html (simile a BSD)
La prima potrebbe essere la tua migliore opzione se la licenza si adatta al tuo progetto.
Zend_Soap_AutoDiscover è una buona alternativa a NuSOAP. Ma è anche ansible creare da zero il file WSDL che può essere molto complicato e sobject a errori. Per semplificare questo process, è ansible utilizzare un IDE per generare il file WSDL per le funzioni PHP e passarlo come parametro alla class PHP SoapServer. Guarda il tutorial completo su Come generare wsdl per php native soap