11
votes

Comment générer un code client PHP SOAP?

existe-t-il un moyen de générer un client de savon PHP à partir d'un fichier WSDL?

Je veux dire quelque chose comme wsdl.exe ou svcoktil.exe in .NET, qui génère du code pour une classe qui peut être le client d'un service, pas comme: xxx

mon problème est que je veux que le client PHP puisse pouvoir travailler avec un service, même lorsque ce service n'expose pas son WSDL.


0 commentaires

6 Réponses :


9
votes

Vous pouvez utiliser la méthode [ generateProxycode code>] fourni dans le package SOAP_WSDL ( http://pear.php.net/reference/soap-0.9.4/soap/soap_wsdl.html#methodgenerateProxycode ) à la place et enregistrez-le dans un fichier :

$WSDL     = new SOAP_WSDL($wsdl_url); 
$php      = $WSDL->generateProxyCode();
file_put_contents('wsdl_proxy.php', '<?php ' . $php . ' ?>');

require 'wsdl_proxy.php';


1 commentaires

Deux notes sur le code de l'échantillon: vous devez inclure la classe de poires avec requis_once ("SOAP / WSDL.PHP"); et la méthode n'est pas $ WSDL-> GetProxycode (); Mais $ WSDL-> GenerateProxycode ();



4
votes

juste pour aider quelqu'un d'autre qui appartient à ce post et pense "Comment le diable est-ce que je travaille avec cette chose soap_wsdl?" (comme moi-même)

Ouvrez la ligne de commande et accédez à votre répertoire PHP (j'ai installé XAMPP Lite dans cet exemple)

Une fois dans le répertoire PHP, j'ai dirigé le script PEAR.BAT. Après cela, je pouvais taper la suivante via la ligne cmd

pic -v (fournit la version de votre installation)

Liste de paires

Si vous tapez ci-dessus et que vous ne voyez pas le savon, vous devez suivre les éléments suivants de la ligne CMD:

  • poire installe net_dime-1.0.1

  • poire installer mail_mime-1.5.2

  • PEART INSTALL LE MAIL-1.2.0B1

  • SOAP d'installation de poire-0.12.0

    Maintenant, après avoir installé ces packages et faire une autre "liste de paires", vous devez voir le savon répertorié.

    Si oui, vous pouvez inclure une référence aux fichiers PHP retirés à l'intérieur du répertoire de poire sous le savon.

    Un exemple de ce chemin peut être C: \ xamplite \ php \ poire \ savon


0 commentaires

8
votes

Il y a une application pour cela, elle s'appelle WSDL2PLGenerator:

http://code.google.com/p/wsdl2phpenerator/

exécutez-le contre un fichier WSDL et générera des cours en fonction des services WSDL.


2 commentaires

WSDL2HPGenerator vous donnera une bonne tête


Pour obtenir la dernière version, allez à la nouvelle maison de WSDL2PLGenerator, sur github, github.com/walle/wsdl2phpGenerator "/a > Il y a aussi une fourchette notable à github.com/reload/wsdl2phpGenerator qui tente d'intégrer les demandes de traction I Je n'ai pas vraiment eu le temps de vérifier et de fusionner.



0
votes

J'ai utilisé WSDL2PHP , un simple outil de poirier; Il semble que le projet est mort, mais vous pouvez toujours télécharger la dernière version ici: http://sourceforge.net/projects / wsdl2php /

Il nécessite une machine de développement avec PHP 5 et PEAR, et vous devez l'installer avec cette commande de poire: xxx

après cela, Vous pouvez générer le fichier de classes PHP avec cette commande: xxx

Il génère une classe principale qui prolonge de savacclient et de nombreux autres classés représentant des demandes, des réponses et des objets complexes, de sorte que Il est très utile lorsque vous développez dans une IDE avec "Intellisense" comme Netbeans.


1 commentaires

Comment pouvons-nous installer la même chose dans Windows?



16
votes

J'ai trouvé le générateur vraiment utile

https://github.com/wsdl2phpgenerator/wsdl2phpenerator

instructions (de GitHub): p>

  • Télécharger WSDL2PLYERRER-2.3.0.PHAR de la dernière version li>
  • Run "PHP WSDL2PRENERATOR-2.3.0.PHAR -I INPUT.WSDL -O TMP / My / My / WSDL" LI> ul>

    Travail pour WSDL hébergé sur le Web TOO P>

    EG P>

    php wsdl2phpgenerator-2.3.0.phar -i http://someurl/input.wsdl -o tmp/my/directory/wsdl
    


1 commentaires

La meilleure solution jamais: vous ne devez pas utiliser le compositeur, il va générer un dossier avec toutes les classes nécessaires et comment les utiliser pour appeler la méthode à distance



0
votes

J'ai essayé d'utiliser tout ce qui était énuméré ici.

a trouvé l'autre choix: https://github.com/mikaelcom/wsdltophp

plus en comparaison avec précédent:

  • Aucune dépendance. pour le générateur et le client créé.

  • classes pour dans et out> paramètres .

  • Exemples d'utilisation de Créé Client . Ce n'est pas si important. Mais parfois très utile

  • moins de code (en comparaison avec SOAP_WSDL)

    minus:

    • La réponse et tout sous-type complexe sont enveloppés sur un autre objet contenant des informations techniques.

3 commentaires

Merci pour vos commentaires détaillés. Pourriez-vous m'envoyer plus de détails sur votre remarque "La réponse et tout sous-type complexe sont enveloppés à un autre objet contenant des informations techniques". au contact@wsdltophp.com, ce serait vraiment apprécié, thks


En fait, c'est pas correct. En .net, vous pouvez obtenir des objets exactement la même chose que vous l'avez au service. Mais dans mon cas quand je suis répondu à PHP du service .NET, j'ai des wrappers "supplémentaires". Ils présentent réellement dans WSDL, mais .NET, d'une manière ou d'une autre, "sait" que certaines classes ne sont que pour les besoins techniques et la supprimer en résultat.


Merci, si vous aviez des exemples, ce serait génial, sinon je vais chercher si cela peut être évité.