mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-03-29 04:12:21 +02:00
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@274693 c90b9560-bf6c-de11-be94-00142212c4b1
176 lines
5.9 KiB
XML
176 lines
5.9 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision: 1.1 $ -->
|
|
<!-- Purpose: xml -->
|
|
<!-- Membership: pecl -->
|
|
<!-- State: experimental -->
|
|
<!-- EN-Revision: 1.2 Maintainer: dams Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
|
|
<book xml:id="book.sca" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>SCA</title>
|
|
|
|
<!-- {{{ preface -->
|
|
<preface xml:id="intro.sca">
|
|
&reftitle.intro;
|
|
&warn.experimental;
|
|
<para>
|
|
SCA pour PHP rend possible aux programmeurs PHP l'utilisation de composants
|
|
réutilisables, qui peuvent être appelées de différentes façons, avec une
|
|
interface identique et un minimum de tracas. Actuellement, les composants
|
|
peuvent s'appeller l'un l'autre, localement ou via des services Web,
|
|
mais a l'avenir, il est prévu de mettre en place d'autres moyens de communication.
|
|
SCA fournit aux programmeurs une approche aussi naturelle que possible
|
|
pour cela.
|
|
</para>
|
|
|
|
<para>
|
|
Les composants SCA utilisent des annotations style phpDocumentor
|
|
(voyez http://www.phpdoc.org/) pour déclarer des dépendances avec les
|
|
autres composants SCA ou les services Web. L'exécuteur SCA de PHP
|
|
résout ces dépendances à l'exécution, pour les autres composants, et permet
|
|
au développeur PHP de se concentrer sur la logique métier, plutôt que
|
|
sur la localisation des ressources.
|
|
</para>
|
|
|
|
<para>
|
|
Le modèle SCA pour PHP peut être étendu pour supporter de nombreux autres
|
|
types de services, tels que REST et Atompub. Cependant, les services Web,
|
|
et plus exactement, les services SOAP sur HTTP avec document WSDL) sont les
|
|
seuls qui soient spécifiés.
|
|
</para>
|
|
|
|
<para>
|
|
Les composants utilisent aussi les annotations pour définir les interfaces
|
|
avec lesquels ils exposent leurs services. L'exécuteur SCA pour PHP va
|
|
automatiquement générer le document WSDL pour ces annotations, afin que les
|
|
composants puissent exposer facilement leurs services Web. Ces annotations sont
|
|
une extension naturelle de phpDocumentor. Déployer un service Web
|
|
peut alors êtr aussi simple que de placer un composant PHP dans la racine
|
|
Web d'un serveur Web.
|
|
</para>
|
|
|
|
<para>
|
|
Les composants utilisent aussi les annotations pour spécifier les structures
|
|
de données (exprimées avec des types complexe de schéma XML), qui sont gérés
|
|
avec Service Data Objects (SDOs).
|
|
</para>
|
|
|
|
<para>
|
|
Un script PHP qui n'est pas un composant SCA et qui ne contient aucune
|
|
annotation peut utiliser les services d'un composant SCA. Un script PHP ou
|
|
un composant peut faire des appels à un service Web qui n'utilise pas SCA,
|
|
mais en utilisant le même système d'appels et d'annotations pour obtenir
|
|
une référence.
|
|
</para>
|
|
|
|
<para>
|
|
Tout d'abord, nous présent un composant SCA simple, ConvertedStockQuote,
|
|
qui illustre l'utilisation de SCA pour PHP. Il dispose d'une méthode
|
|
<function>getQuote</function>, qui, à partir d'un identifiant d'actions
|
|
retourne le cours de l'action, converti dans une devise donnée.
|
|
Nous utiliserons cet exemple comme base pour présenter SCA pour PHP
|
|
dans le reste de la documentation.
|
|
</para>
|
|
|
|
<para>
|
|
<example>
|
|
<title>Exemple simple avec SCA</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
include "SCA/SCA.php";
|
|
|
|
/**
|
|
* Calcule le prix d'une action, à partir de son symbole, dans une devise.
|
|
*
|
|
* @service
|
|
* @binding.soap
|
|
*/
|
|
class ConvertedStockQuote {
|
|
|
|
/**
|
|
* Le service de taux de change à utiliser
|
|
*
|
|
* @reference
|
|
* @binding.php ../ExchangeRate/ExchangeRate.php
|
|
*/
|
|
public $exchange_rate;
|
|
|
|
/**
|
|
* Le service de cotation des actions à utiliser
|
|
*
|
|
* @reference
|
|
* @binding.soap ../StockQuote/StockQuote.wsdl
|
|
*/
|
|
public $stock_quote;
|
|
|
|
/**
|
|
* Lit le prix d'une action, pour un symbole, dans une devise
|
|
*
|
|
* @param string $ticker Le symbole.
|
|
* @param string $currency La devise.
|
|
* @return float Le cours de l'action.
|
|
*/
|
|
function getQuote($ticker, $currency)
|
|
{
|
|
$quote = $this->stock_quote->getQuote($ticker);
|
|
$rate = $this->exchange_rate->getRate($currency);
|
|
return $rate * $quote;
|
|
}
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<para>
|
|
Dans cet exemple, nous voyons que le composant SCA est implémenté à l'aide
|
|
d'une classe PHP, et qu'il inclut <filename>SCA.php</filename>. La classe
|
|
contient un mélange de logique métier et de références à d'autres services
|
|
et composants. Dans la méthode illustrée, <function>getQuote</function>
|
|
il n'y a que de la logique métier, mais elle repose sur les variables
|
|
<varname>$stock_quote</varname> et
|
|
<varname>$exchange_rate</varname> qui ont été initialisées.
|
|
Ces variables font référence à deux autres composants, et seront initialisées
|
|
par l'exécutable SCA, via des proxy pour ces deux services, à chaque
|
|
fois que notre composant est exécuté. Les annotations de ces deux services
|
|
montrent que l'un est un service local, qui sera appelé avec le même exécutable
|
|
PHP, et que l'autre est un composant distant, qui sera appelé avec une
|
|
requête SOAP. Ce composant expose alors la méthode
|
|
<function>getQuote</function>, localement et comme service Web, pour que
|
|
l'on puisse y accéder localement et à distance.
|
|
</para>
|
|
</preface>
|
|
<!-- }}} -->
|
|
|
|
&reference.sca.setup;
|
|
&reference.sca.constants;
|
|
&reference.sca.examples;
|
|
&reference.sca.reference;
|
|
|
|
</book>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|
|
|