1
0
mirror of https://github.com/php/doc-es.git synced 2026-03-25 16:02:13 +01:00
Files
archived-doc-es/reference/sca/book.xml
Pedro Antonio Gil Rodríguez 5a6f33d6e6 Updated to the most recent version
git-svn-id: https://svn.php.net/repository/phpdoc/es/trunk@330523 c90b9560-bf6c-de11-be94-00142212c4b1
2013-06-16 19:57:20 +00:00

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
-->