In order for SCA to find the service class, the script filename must match the service class name. In this case, StockQuote.php
SCA pour PHP peut générer des fichiers WSDL à partir des annotations
dans un composant, ce qui fait qu'il peut être facilement déployé et
exposé comme un service Web. Pour fournir à SCA les informations dont
il a besoin pour produire le WSDL, il est nécessaire d'ajouter l'annotation
@binding.soap
dans l'annotation
@service
et de spécifier les paramètres
et les valeurs de retour avec les annotations @param
et
@return.
Ces annotations seront lues quand
le fichier WSDL sera produit, et l'ordre et les types des
paramètres va déterminer le contenu de la section
<schema> du fichier WSDL.
SCA pour PHP produit toujours des fichiers WSDL pour les composants qui exposent des services Web. Notez que cela n'empêche pas les composants de consommer des services Web qui ne sont pas des composants SCA, et qui sont documentés avec des fichiers WDSL qui ne sont pas dans le même format.
Les types scalaires qui peuvent être utilisé dans les annotations
@param
sont les quatres types scalaires communs de PHP :
booléen, entier, nombre décimal et chaîne de caractères. Ils sont simplement transformés
en un équivalent au format XML. L'exemple ci-dessous, qui est une
implémentation triviale du service StockQuote avec des appels à
ConvertedStockQuote illustre l'utilisation de chaîne de caractères et nombre décimal.
Exemple #1 Service StockQuote
<?php
include "SCA/SCA.php";
/**
* Implémentation d'un service distant StockQuote Web.
*
* @service
* @binding.soap
*
*/
class StockQuote {
/**
* Lit une cotation pour un symbole
*
* @param string $ticker Le symbole de l'action
* @return float La cotation de l'action
*/
function getQuote($ticker) {
return 80.9;
}
}
?>
Un fichier WSDL, semblable au document suivant (mais avec une localisation
de service autre que 'localhost'
, probablement)
sera généré pour le service :
Exemple #2 Generated WSDL
<?xml version="1.0" encoding="UTF-8"?> <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xsi:type="tDefinitions" xmlns:tns2="http://StockQuote" xmlns:tns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns3="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://StockQuote"> <types> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://StockQuote"> <xs:element name="getQuote"> <xs:complexType> <xs:sequence> <xs:element name="ticker" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="getQuoteResponse"> <xs:complexType> <xs:sequence> <xs:element name="getQuoteReturn" type="xs:float"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </types> <message name="getQuoteRequest"> <part name="getQuoteRequest" element="tns2:getQuote"/> </message> <message name="getQuoteResponse"> <part name="return" element="tns2:getQuoteResponse"/> </message> <portType name="StockQuotePortType"> <operation name="getQuote"> <input message="tns2:getQuoteRequest"/> <output message="tns2:getQuoteResponse"/> </operation> </portType> <binding name="StockQuoteBinding" type="tns2:StockQuotePortType"> <operation name="getQuote"> <input> <tns3:body xsi:type="tBody" use="literal"/> </input> <output> <tns3:body xsi:type="tBody" use="literal"/> </output> <tns3:operation xsi:type="tOperation" soapAction=""/> </operation> <tns3:binding xsi:type="tBinding" transport="http://schemas.xmlsoap.org/soap/http" style="document"/> </binding> <service name="StockQuoteService"> <port name="StockQuotePort" binding="tns2:StockQuoteBinding"> <tns3:address xsi:type="tAddress" location="http://localhost/StockQuote/StockQuote.php"/> </port> </service> </definitions> <!-- this line identifies this file as WSDL generated by SCA for PHP. Do not remove -->
In order for SCA to find the service class, the script filename must match the service class name. In this case, StockQuote.php