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 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. P> P> wsdl.exe code> ou
svcoktil.exe code> in .NET, qui génère du code pour une classe qui peut être le client d'un service, pas comme: p>
6 Réponses :
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';
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 ();
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) p>
Ouvrez la ligne de commande et accédez à votre répertoire PHP (j'ai installé XAMPP Lite dans cet exemple) P>
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 p>
pic -v (fournit la version de votre installation) p>
Liste de paires p>
Si vous tapez ci-dessus et que vous ne voyez pas le savon, vous devez suivre les éléments suivants de la ligne CMD: P>
poire installe net_dime-1.0.1 p> li>
poire installer mail_mime-1.5.2 p> li>
PEART INSTALL LE MAIL-1.2.0B1 P> LI>
SOAP d'installation de poire-0.12.0 P> LI> ul>
Maintenant, après avoir installé ces packages et faire une autre "liste de paires", vous devez voir le savon répertorié. P>
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. P>
Un exemple de ce chemin peut être C: \ xamplite \ php \ poire \ savon p>
Il y a une application pour cela, elle s'appelle WSDL2PLGenerator: P>
http://code.google.com/p/wsdl2phpenerator/ P >
exécutez-le contre un fichier WSDL et générera des cours en fonction des services WSDL. P>
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.
J'ai utilisé WSDL2PHP strong>, 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: p> après cela, Vous pouvez générer le fichier de classes PHP avec cette commande: p> 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. P> P>
Comment pouvons-nous installer la même chose dans Windows?
J'ai trouvé le générateur vraiment utile
https://github.com/wsdl2phpgenerator/wsdl2phpenerator
instructions (de GitHub): p>
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
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
J'ai essayé d'utiliser tout ce qui était énuméré ici. P>
a trouvé l'autre choix: https://github.com/mikaelcom/wsdltophp P>
plus en comparaison avec précédent: p>
Aucune dépendance. pour le générateur et le client créé. em> p> li>
classes pour dans strong> et Exemples d'utilisation de Créé Client Strort>. Ce n'est pas si important. Mais parfois très utile em> p> li>
moins de code (en comparaison avec SOAP_WSDL) P> LI>
ul>
minus: p>
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é.