mirror of
https://github.com/php/doc-es.git
synced 2026-03-25 16:02:13 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@330523 c90b9560-bf6c-de11-be94-00142212c4b1
177 lines
6.0 KiB
XML
177 lines
6.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: 1634a886415d0ab4df195fe49d18a1c150b70758 Maintainer: seros Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<!-- State: experimental -->
|
|
|
|
<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 para PHP posibilita a un programador de PHP para escribir
|
|
componentes reusables, que pueden ser invocados de varias formas, con una
|
|
interfaz idéntica y con un mínimo de preocupación. Por ahora,
|
|
los componentes se pueden llamar unos a otros localmente o mediante servicios web,
|
|
pero en el futuro se espera que sean posibles otras formas. Proporciona
|
|
al programador una manera de realizar esto, la cual parecerá tan natural
|
|
como sea posible en PHP.
|
|
</para>
|
|
|
|
<para>
|
|
Los componentes SCA usan anotaciones estilo phpDocumentor (véase
|
|
http://www.phpdoc.org/) para declarar dependencias sobre
|
|
otros componentes SCA o servicios Web. El tiempo de ejecución de SCA para PHP
|
|
resuelve estas dependiencias en tiempo de ejecución en nombre de los componentes,
|
|
y así permite que el programador de PHP se centre en la lógica de negocio
|
|
en vez de ubicar y obtener referencias a dependencias.
|
|
</para>
|
|
|
|
<para>
|
|
El modelo de programcación de SCA para PHP se puede ampliar para admitir
|
|
varios tipos de servicios, como REST y Atompub. Sin embargo, los sevicios
|
|
web (más exactamente, definidos con WSDL, servicios SOAP/HTTP), son
|
|
los únicos tipos actualmente especificados.
|
|
</para>
|
|
|
|
<para>
|
|
Los componentes también usan anotaciones para definir la interfaz que
|
|
exponen como servicio. El tiempo de ejecución de SCA para PHP automáticamete
|
|
generará WSDL desde estas anotaciones, por lo que un componente SCA se
|
|
expone con facilidad como un servicio web. Estas anotaciones son una extensión
|
|
natural de las proporcionadas por phpDocumentor. Implementar un servicio
|
|
web puede ser tan simple como colocar un componente de PHP bajo la raíz de
|
|
documentos de un servidor web.
|
|
</para>
|
|
|
|
<para>
|
|
Los componentes también usan anotaciones para especificar estructuras de datos
|
|
(expresadas usandos tipos complejos de esquemas XML) que son luego manejadas
|
|
usando Objetos de Datos de Servicio (SDOs).
|
|
</para>
|
|
|
|
<para>
|
|
Un script de PHP que no es un componente SCA y que no contiene
|
|
anotaciones puede usar los servicios de un componente SCA. Un script o
|
|
componente de PHP puede realizar llamadas a un servicio web que no sea un componente SCA,
|
|
pero usando el mismo sistema de llamadas o anotaciones para obtener una
|
|
referencia.
|
|
</para>
|
|
|
|
<para>
|
|
Primero se mostrará un componente SCA sencillo, ConvertedStockQuote,
|
|
que ilustra muchas de las características de SCA para PHP. Tiene un
|
|
método,
|
|
<function>getQuote</function>, que, dada una cinta de cotizaciones,
|
|
obtiene una cotización para tal acción, convertida a la moneda dada.
|
|
Se usará este ejemplo como base para explicar SCA para PHP
|
|
a lo largo del resto de este documento.
|
|
</para>
|
|
|
|
<para>
|
|
<example>
|
|
<title>Un componente SCA sencillo</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
|
|
include "SCA/SCA.php";
|
|
|
|
/**
|
|
* Calcular un precio de acción para una clave de pizarra dada en una moneda dada.
|
|
*
|
|
* @service
|
|
* @binding.soap
|
|
*/
|
|
class ConvertedStockQuote {
|
|
|
|
/**
|
|
* El servicio de tasa de cambio de moneda a usar.
|
|
*
|
|
* @reference
|
|
* @binding.php ../ExchangeRate/ExchangeRate.php
|
|
*/
|
|
public $exchange_rate;
|
|
|
|
/**
|
|
* El servicio de cotización de acciones a usar.
|
|
*
|
|
* @reference
|
|
* @binding.soap ../StockQuote/StockQuote.wsdl
|
|
*/
|
|
public $stock_quote;
|
|
|
|
/**
|
|
* Obtener una cotización de acción para una clave de pizarra dada en una moneda dada.
|
|
*
|
|
* @param string $ticker La clave de pizarra.
|
|
* @param string $currency La moneda al que converitr el valor.
|
|
* @return float El valor de la acción es la moneda dada.
|
|
*/
|
|
function getQuote($ticker, $currency)
|
|
{
|
|
$quote = $this->stock_quote->getQuote($ticker);
|
|
$rate = $this->exchange_rate->getRate($currency);
|
|
return $rate * $quote;
|
|
}
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<para>
|
|
En este ejemplo se ve que un componente SCA está implementado por un
|
|
script que contien una clase de PHP y que incluye
|
|
<filename>SCA.php</filename>. La clase contiene una mezcla de
|
|
lógica de negocio y referencias a otros componentes o servicios. En
|
|
el método ilustrado
|
|
<function>getQuote</function> existe solamente lógica de
|
|
negocio, aunque cuenta con que las variables de instancia
|
|
<varname>$stock_quote</varname> y
|
|
<varname>$exchange_rate</varname> hayan sido inicializadas.
|
|
Estas recurren a otros dos componentes que serán inicializados en el tiempo de
|
|
ejecución de SCA con delegados para estos dos servicios, siempre que se
|
|
ejecute este componente. Las anotaciones para estos dos servicios muestran un
|
|
compoente local, que será invocado dentro del mismo periodo de ejecución
|
|
de PHP, y un componente remoto que será invocado mediante una
|
|
petición SOAP. Este componente también expone el método
|
|
<function>getQuote</function> localmente y como servicio
|
|
web, por lo que, por turnos, pueden ser invocados tanto local como remotamente.
|
|
</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:"~/.phpdoc/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
|
|
-->
|
|
|