2009-02-20 7 views
17

J'utilise la classe SOAP native en PHP 5, ayant changé de NuSOAP car la classe native est plus rapide (et le développement de NuSOAP semble avoir cessé). Cependant le PHP 5 SOAP n'a pas la capacité de générer du WSDL.Génération de WSDL lors de l'utilisation de la classe SOAP native de PHP?

Est-ce que quelqu'un a l'expérience de générer WSDL en PHP? Si oui, merci de recommander votre méthode préférée.

Merci.

Répondre

3

Générer un WSDL à la volée n'est pas quelque chose qui arrive très souvent - cela soulèverait quelques questions sur la stabilité de votre service! Zend Studio peut générer un WSDL à partir d'une classe PHP, et il existe quelques autres outils similaires.

Si vous avez besoin de générer le WSDL dynamique, jetez un oeil à la bibliothèque Zend Framework: Zend_Soap_AutoDiscover

+0

Zend Soap Autodiscover est activement maintenu. Je l'utilise et j'en suis content. –

+2

Ciaran, je pense aux services que nous avons mis en place dans l'entreprise où je travaille. Nous avons une assez bonne application stable et des services, mais arrive à un nouveau partenaire ou existant exige une nouvelle fonctionnalité qui est bonne pour nous deux, donc ouvrir et écrire des choses manuellement n'est pas tout à fait une bonne pratique. L'IHMO correct consiste à utiliser une méthode éprouvée et sécurisée sur laquelle s'appuyer lorsque ces scénarios se produisent - ou si l'équipe informatique change, par exemple ... – Dave

9

Stuart,

Si vous ou quelqu'un d'autre est à la recherche d'une solution à ce problème est ici ce que je faisais .

d'abord obtenir ce script: http://www.phpclasses.org/browse/download/zip/package/3509/name/php2wsdl-2009-05-15.zip

Ensuite, regardez ses fichiers par exemple. Après que je viens tranché la façon dont je avais besoin parce que je suis en utilisant 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, votre tout fait. Btw, j'utilise SoapServer et SoapClient dans php5 +

0

Zend_Soap_AutoDiscover est une bonne alternative à NuSOAP. Mais, vous pouvez également créer le fichier WSDL à partir de zéro, ce qui peut être très compliqué et sujet aux erreurs. Pour faciliter ce processus, vous pouvez utiliser un IDE pour générer le fichier WSDL pour vos fonctions PHP et le passer en paramètre à votre classe PHP SoapServer. Consultez le tutoriel complet sur How to generate wsdl for php native soap class

Questions connexes