Comprendre la génération du fichier WSDL
SCA pour PHP génère un fichier WSDL pour les composants qui contiennent une annotation @binding.soap, après l'annotation @service. Pour générer le service, SCA analyse la classe, et les annotations @param et @return pour chaque méthode publique, ainsi que les annotations de @types dans le composant. Les informations des annotations @param et @return sont utilisées pour construire la section <types> du fichier WDSL. Toutes les annotations @types qui spécifient un schéma distinct engendreront un élément <import> pour ce schéma dans le WSDL.
Attribut de localisation pour l'élément <service>
A la fin du fichier WSDL, l'élément <service> utilise un attribut de localisation 'location', pour identifier l'URL du service. Par exemple :
Exemple #1 Attribut location
<?php /** * Lit une cotation pour une action à partir de son symbole et dans une devise * * @param string $ticker Le symbole * @param string $currency La devise cible * @return float La valeur de l'action dans la devise demandée */ function getQuote($ticker, $currency) { $quote = $this->stock_quote->getQuote($ticker); $rate = $this->exchange_rate->getRate($currency); return $rate * $quote; } ?>
Pour définir cette méthode, le fichier WSDL va donner des noms à la méthode et aux paramètres, puis donner au schéma XML le type des paramètres. La section de type du fichier WSDL produit ressemble à ceci :
Exemple #3 Section types avec paramètres nommés
<?php $quote = $remote_service->getQuote('IBM','USD'); ?>
Elle produira un message SOAP qui contient ce code XML :
<getQuote> <ticker>IBM</ticker> <currency>USD</currency> </getQuote>
Dans le composant de réception, l'exécutable SCA prend les paramètres dans le même ordre, et forme une liste de paramètres positionnés, en reformant la liste des arguments ('IBM','USD').
Dans les deux cas, l'exécutable SCA s'appuie sur l'ordre dans lequel les arguments sont placés dans le message SOAP : cet ordre doit correspondre à l'ordre d'appel des paramètres dans la fonction. Cet ordre est finalement défini par l'ordre des annotations @param : il déterminent l'ordre dans lequel les paramètres apparaissent dans le fichier WSDL, et dans le message SOAP. Par conséquent, il est essentiel que cet ordre d'annotations @param correspondent aux paramètres de la méthode publique.