| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.json.server">
- <title>Zend_Json_Server - servidor JSON-RPC</title>
- <para>
- <classname>Zend_Json_Server</classname> es una implementación del
- servidor <ulink
- url="http://groups.google.com/group/json-rpc/">JSON-RPC</ulink>
- Soporta tanto la versión 1 de la especificación
- <ulink url="http://json-rpc.org/wiki/specification">JSON-RPC</ulink>
- así como la especificación de la
- <ulink url="http://groups.google.com/group/json-rpc/web/json-rpc-1-2-proposal">versión 2</ulink>;
- además, provee una implementación de PHP de la especificación del
- <ulink url="http://groups.google.com/group/json-schema/web/service-mapping-description-proposal">Service
- Mapping Description (SMD)</ulink>
- para prestar un servicio de metadatos a consumidores del servicio.
- </para>
- <para>
- JSON-RPC es un protocolo liviano de Remote Procedure Call que utiliza JSON
- para envolver sus mensajes. Esta implementación JSON-RPC sigue la API
- PHP de <ulink
- url="http://us.php.net/manual/en/function.soap-soapserver-construct.php">SoapServer</ulink>.
- Esto significa que, en una situación típica, simplemente:
- </para>
- <itemizedlist>
- <listitem><para>Instancia el objeto servidor</para></listitem>
- <listitem><para>Agrega una o más funciones y/o clases/objetos al objeto
- servidor para</para></listitem>
- <listitem><para>handle() -- maneja -- el requerimiento</para></listitem>
- </itemizedlist>
- <para>
- <classname>Zend_Json_Server</classname> utiliza <xref linkend="zend.server.reflection" />
- para realizar reflexión sobre cualquiera de las clases o funciones
- agregadas, y utiliza esa información para construir tanto la SMD y
- hacer cumplir el método de llamado de firmas.
- Como tal, es imperativo que cualquier de las funciones agregadas y/o
- los métodos de clase tengan mínimamente una plena documentación de
- PHP docblocks:
- </para>
- <itemizedlist>
- <listitem><para>Todos los parámetros y sus tipos de variables esperados</para></listitem>
- <listitem><para>El tipo de variable del valor de retorno</para></listitem>
- </itemizedlist>
- <para>
- <classname>Zend_Json_Server</classname> escucha por solicitudes POST
- únicamente en este momento; afortunadamente, la mayoría de las
- implementaciones del cliente JSON-RPC en los medios en el momento de
- escribir esto, sólo requieren a POST como es.
- Esto hace que sea fácil de utilizar el mismo punto final del servidor
- para manejar a ambas peticiones así como para entregar el servicio SMD,
- como se muestra en el siguiente ejemplo.
- </para>
- <example id="zend.json.server.usage">
- <title>Uso de Zend_Json_Server</title>
- <para>
- Primero, definir una clase que queramos exponer vía servidor JSON-RPC.
- Vamos a la clase 'Calculator', y definir los métodos para
- 'add', 'subtract', 'multiply', y 'divide':
- </para>
- <programlisting language="php"><![CDATA[
- /**
- * Calculator - clase de ejemplo para exponer via JSON-RPC
- */
- class Calculator
- {
- /**
- * Devuelve la suma de dos variables
- *
- * @param int $x
- * @param int $y
- * @return int
- */
- public function add($x, $y)
- {
- return $x + $y;
- }
- /**
- * Devuelve la diferencia de dos variables
- *
- * @param int $x
- * @param int $y
- * @return int
- */
- public function subtract($x, $y)
- {
- return $x - $y;
- }
- /**
- * Devuelve el producto de dos variables
- *
- * @param int $x
- * @param int $y
- * @return int
- */
- public function multiply($x, $y)
- {
- return $x * $y;
- }
- /**
- * Devuelve la división de dos variables
- *
- * @param int $x
- * @param int $y
- * @return float
- */
- public function divide($x, $y)
- {
- return $x / $y;
- }
- }
- ]]></programlisting>
- <para>
- Nótese que cada método tiene un docblock con entradas indicando cada
- parámetro y su tipo, así como una entrada para el valor de retorno.
- Esto es <emphasis>absolutamente crítico</emphasis> cuando se usa
- <classname>Zend_Json_Server</classname> -- o cualquier otro
- componente del servidor en Zend Framework, por esa cuestión.
- </para>
- <para>
- Ahora, crearemos un script para manejar las peticiones:
- </para>
- <programlisting language="php"><![CDATA[
- $server = new Zend_Json_Server();
- // Indicar que funcionalidad está disponible:
- $server->setClass('Calculator');
- // Manejar el requerimiento:
- $server->handle();
- ]]></programlisting>
- <para>
- Sin embargo, esto no soluciona el problema de devolución de un SMD
- para que el cliente JSON-RPC pueda autodescubrir los métodos.
- Esto puede lograrse determinando el método del requerimiento HTTP,
- y luego especificando algún servidor de metadatos:
- </para>
- <programlisting language="php"><![CDATA[
- $server = new Zend_Json_Server();
- $server->setClass('Calculator');
- if ('GET' == $_SERVER['REQUEST_METHOD']) {
- // Indica el punto final de la URL, y la versión en uso de JSON-RPC:
- $server->setTarget('/json-rpc.php')
- ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
- // Capturar el SMD
- $smd = $server->getServiceMap();
- // Devolver el SMD al cliente
- header('Content-Type: application/json');
- echo $smd;
- return;
- }
- $server->handle();
- ]]></programlisting>
- <para>
- Si utiliza el servidor JSON-RPC con Dojo toolkit, también necesitará
- establecer un flag de compatibilidad especial para garantizar
- que los dos interoperen correctamente:
- </para>
- <programlisting language="php"><![CDATA[
- $server = new Zend_Json_Server();
- $server->setClass('Calculator');
- if ('GET' == $_SERVER['REQUEST_METHOD']) {
- $server->setTarget('/json-rpc.php')
- ->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
- $smd = $server->getServiceMap();
- // Establecer la compatibilidad con Dojo:
- $smd->setDojoCompatible(true);
- header('Content-Type: application/json');
- echo $smd;
- return;
- }
- $server->handle();
- ]]></programlisting>
- </example>
- <sect2 id="zend.json.server.details">
- <title>Detalles Avanzados</title>
- <para>
- Aunque la mayor funcionalidad de <classname>Zend_Json_Server</classname> se
- puntualiza en <xref linkend="zend.json.server.usage" />, hay
- más funcionalidad avanzada disponible.
- </para>
- <sect3 id="zend.json.server.details.zendjsonserver">
- <title>Zend_Json_Server</title>
- <para>
- <classname>Zend_Json_Server</classname> es la clase núcleo en la
- propuesta JSON-RPC; que maneja todas las peticiones y como
- respuesta devuelve un conjunto de datos.
- Tiene los siguientes métodos:
- </para>
- <itemizedlist>
- <listitem><para><methodname>addFunction($function)</methodname>: Especifica
- la función de espacio del usuario para agregar al servidor.</para></listitem>
- <listitem><para><methodname>setClass($class)</methodname>: Especifica una
- clase u objeto para agregar al servidor; todos los métodos
- públicos de ese item serán expuestos como métodos JSON-RPC.</para></listitem>
- <listitem><para><methodname>fault($fault = null, $code = 404, $data =
- null)</methodname>: Crea y devuelve un objeto
- <classname>Zend_Json_Server_Error</classname>.</para></listitem>
- <listitem><para><methodname>handle($request = false)</methodname>: Maneja
- una solicitud JSON-RPC; opcionalmente, pasa un objeto
- <classname>Zend_Json_Server_Request</classname> a utlizar
- (crea uno por defecto).</para></listitem>
- <listitem><para><methodname>getFunctions()</methodname>: Devuelve una lista
- de todos los métodos agregados.</para></listitem>
- <listitem><para><methodname>setRequest(Zend_Json_Server_Request
- $request)</methodname>: Especifica un objeto solicitud para el
- servidor a utilizar.</para></listitem>
- <listitem><para><methodname>getRequest()</methodname>: Recupera el objeto
- solicitud usado por el servidor.</para></listitem>
- <listitem><para><methodname>setResponse(Zend_Json_Server_Response
- $response)</methodname>: Establece el objeto respuesta para el
- servidor a utilizar.</para></listitem>
- <listitem><para><methodname>getResponse()</methodname>: Recupera el objeto
- respuesta usado por el servidor.</para></listitem>
- <listitem><para><methodname>setAutoEmitResponse($flag)</methodname>:
- Indica si el servidor debería emitir automáticamente la
- respuesta y todas las cabeceras; por defecto, esto es
- verdadero.</para></listitem>
- <listitem><para><methodname>autoEmitResponse()</methodname>: Determina si la
- auto-emisión de la respuesta está habilitada.</para></listitem>
- <listitem><para><methodname>getServiceMap()</methodname>: Recupera la
- descripción del mapa de servicio en el form de un
- objeto
- <classname>Zend_Json_Server_Smd</classname>.</para></listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.json.server.details.zendjsonserverrequest">
- <title>Zend_Json_Server_Request</title>
- <para>
- El medio ambiente de una solicitud JSON-RPC está encapsulado en
- el objeto <classname>Zend_Json_Server_Request</classname>.
- Este objeto le permite establecer porciones necesarias de la
- solicitud JSON-RPC, incluida el ID de la solicitud, parámetros y
- especificaciones de la versión JSON-RPC. Tiene la capacidad de
- cargarse a sí mismo via JSON o un conjunto de opciones, y puede
- mostrase a si mismo como JSON vía el método <methodname>toJson()</methodname>.
- </para>
- <para>
- El objeto solicitud tiene los siguientes métodos disponibles:
- </para>
- <itemizedlist>
- <listitem><para><methodname>setOptions(array $options)</methodname>: Especifica
- la configuración del objeto. <methodname>$options</methodname> puede
- contener claves que concuerden con cualuier método 'set':
- <methodname>setParams()</methodname>, <methodname>setMethod()</methodname>,
- <methodname>setId()</methodname>, y
- <methodname>setVersion()</methodname>.</para></listitem>
- <listitem><para><methodname>addParam($value, $key = null)</methodname>:
- Agrega un parámetro para usar con el método de llamada.
- Los parámetros pueden ser sólo los valores, o pueden
- incluir opcionalmente el nombre del parámetro.
- </para></listitem>
- <listitem><para><methodname>addParams(array $params)</methodname>: Agrega
- múltiples parámetros a la vez; proxies a
- <methodname>addParam()</methodname></para></listitem>
- <listitem><para><methodname>setParams(array $params)</methodname>:
- Establece todos los parámetros a la vez; sobrescribe
- cualquiera de los parámetros existentes.</para></listitem>
- <listitem><para><methodname>getParam($index)</methodname>: Recupera un
- parámetro por posición o por el nombre.</para></listitem>
- <listitem><para><methodname>getParams()</methodname>: Recupera todos los
- parámetros a la vez.</para></listitem>
- <listitem><para><methodname>setMethod($name)</methodname>: Establece el
- método para llamar.</para></listitem>
- <listitem><para><methodname>getMethod()</methodname>: Recupera el método que
- será llamado.</para></listitem>
- <listitem><para><methodname>isMethodError()</methodname>: Determinar si la
- solicitud está malformada o no y si daría como resultado
- un error.</para></listitem>
- <listitem><para><methodname>setId($name)</methodname>: Establecer el
- identificador de solicitud(utilizado por el cliente
- para igualar las solicitudes de respuestas).</para></listitem>
- <listitem><para><methodname>getId()</methodname>: Recuperar el identificador
- de solicitudes.</para></listitem>
- <listitem><para><methodname>setVersion($version)</methodname>: Establecer la
- versión de la especificación JSON-RPC que conforma la
- solicitud. Puede ser '1.0' o '2.0'.</para></listitem>
- <listitem><para><methodname>getVersion()</methodname>: Recuperar la versión
- de la especificación JSON-RPC utilizados por la solicitud.
- </para></listitem>
- <listitem><para><methodname>loadJson($json)</methodname>: Cargar el objeto
- solicitud de una cadena JSON.</para></listitem>
- <listitem><para><methodname>toJson()</methodname>: Mostrar la solicitud como
- un string JSON.</para></listitem>
- </itemizedlist>
- <para>
- Una versión específica de HTTP está disponible a través de
- <classname>Zend_Json_Server_Request_Http</classname>. Esta clase
- podrá recuperar la solicitud via <methodname>php://input</methodname>, y
- permite el acceso JSON sin procesar vía el método
- <methodname>getRawJson()</methodname>.
- </para>
- </sect3>
- <sect3 id="zend.json.server.details.zendjsonserverresponse">
- <title>Zend_Json_Server_Response</title>
- <para>
- La respuesta del conjunto de datos JSON-RPC es encapsulada en el
- objeto <classname>Zend_Json_Server_Response</classname>.
- Este objeto le permite ajustar el valor de retorno de la
- solicitud, siendo la respuesta un error o no, el identificador
- de solicitud, con que versión de especificación esta conformada
- la respuesta de JSON-RPC, y, opcionalmente el mapa de servicio.
- </para>
- <para>
- El objeto respuesta tiene los siguientes métodos disponibles:
- </para>
- <itemizedlist>
- <listitem><para><methodname>setResult($value)</methodname>: Establecer el
- resultado de la respuesta.</para></listitem>
- <listitem><para><methodname>getResult()</methodname>: Recuperar el resultado
- de la respuesta.</para></listitem>
- <listitem><para><methodname>setError(Zend_Json_Server_Error
- $error)</methodname>: Establecer un objeto error. Si ya está, este
- será utilizado como la respuesta cuando se serialize a JSON.
- </para></listitem>
- <listitem><para><methodname>getError()</methodname>: Recuperar el objeto
- error, si lo hubiera.</para></listitem>
- <listitem><para><methodname>isError()</methodname>: Si la respuesta es una
- respuesta de error o no.</para></listitem>
- <listitem><para><methodname>setId($name)</methodname>: Establecer el
- identificador de solicitud (de manera que la respuesta
- del cliente pueda coincidir con la solicitud original).
- </para></listitem>
- <listitem><para><methodname>getId()</methodname>: Recuperar el identificador
- de solicitud.</para></listitem>
- <listitem><para><methodname>setVersion($version)</methodname>: Establecer la
- versión JSON-RPC con la que deba estar conformada la
- respuesta.</para></listitem>
- <listitem><para><methodname>getVersion()</methodname>: Recuperar la versión
- JSON-RPC con la cumple la respuesta.</para></listitem>
- <listitem><para><methodname>toJson()</methodname>: Serializar la respuesta a
- JSON. Si la respuesta es una respuesta de error,
- serializar el objeto error.</para></listitem>
- <listitem><para><methodname>setServiceMap($serviceMap)</methodname>:
- Establecer el objeto mapa de servicio para la respuesta.
- </para></listitem>
- <listitem><para><methodname>getServiceMap()</methodname>: Recuperar el objeto
- mapa de servicio, si hubiera alguno.</para></listitem>
- </itemizedlist>
- <para>
- Una versión específica de HTTP está disponible a través de
- <classname>Zend_Json_Server_Response_Http</classname>. Esta clase
- enviará las cabeceras HTTP apropiadas así como serializará la
- respuesta como JSON.
- </para>
- </sect3>
- <sect3 id="zend.json.server.details.zendjsonservererror">
- <title>Zend_Json_Server_Error</title>
- <para>
- JSON-RPC tiene un formato especial para informar condiciones de
- error. Todos los errores necesitan proporcionar, mínimamente,
- un mensaje de error y un código de error; opcionalmente, pueden
- proporcionar datos adicionales, tales como un backtrace.
- </para>
- <para>
- Los códigos de error derivan de los recomendados por <ulink
- url="http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php">el
- proyecto XML-RPC EPI</ulink>. <classname>Zend_Json_Server</classname>
- apropiadamente asigna el código sobre la base de la condición de
- error. Para las excepciones de la aplicación, se utiliza el
- código '-32000'.
- </para>
- <para>
- <classname>Zend_Json_Server_Error</classname> expone los
- siguientes métodos:
- </para>
- <itemizedlist>
- <listitem><para><methodname>setCode($code)</methodname>: Establece el código
- de error; si el código de error no está en el rango de
- aceptación de XML-RPC, -32000 será asignado.</para></listitem>
- <listitem><para><methodname>getCode()</methodname>: Recuperar el actual
- código de error.</para></listitem>
- <listitem><para><methodname>setMessage($message)</methodname>: Establecer el
- mensaje de error.</para></listitem>
- <listitem><para><methodname>getMessage()</methodname>: Recuperar el mensaje
- de error actual.</para></listitem>
- <listitem><para><methodname>setData($data)</methodname>: Establecer el conjunto
- de datos auxiliares para calificar más adelante el error,
- tal como un backtrace.</para></listitem>
- <listitem><para><methodname>getData()</methodname>: Recuperar cualquier
- auxiliar actual de errores de datos.</para></listitem>
- <listitem><para><methodname>toArray()</methodname>: Mandar el error a un
- array. El array contendrá las claves 'code', 'message',
- y 'data'.</para></listitem>
- <listitem><para><methodname>toJson()</methodname>: Mandar el error a una
- representación de error JSON-RPC.</para></listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.json.server.details.zendjsonserversmd">
- <title>Zend_Json_Server_Smd</title>
- <para>
- SMD quiere decir Service Mapping Description, un esquema JSON que
- define cómo un cliente puede interactuar con un servicio web en
- particular. En el momento de escribir esto, la <ulink
- url="http://groups.google.com/group/json-schema/web/service-mapping-description-proposal">especificación</ulink>
- todavía no ha sido ratificada oficialmente, pero ya está en uso
- en Dojo toolkit así como en otros clientes consumidores de
- JSON-RPC.
- </para>
- <para>
- En su aspecto más básico, un SMD indica el método de transporte
- (POST, GET, TCP/IP, etc), el tipo de envoltura de la solicitud
- (generalmente se basa en el protocolo del servidor),
- el objetivo URL del proveedor del servicio, y un mapa de los
- servicios disponibles. En el caso de JSON-RPC, el servicio de mapa
- es una lista de los métodos disponibles, en el que cada método
- documenta los parámetros disponibles y sus tipos, así como los
- tipos de valores esperados a devolver.
- </para>
- <para>
- <classname>Zend_Json_Server_Smd</classname> Proporciona un objeto
- orientado para construir servicios de mapas.
- Básicamente, pasa los metadatos describiendo el servicio usando
- mutators, y especifica los servicios (métodos y funciones).
- </para>
- <para>
- Las descripciones de los servicios son típicamente instancias de
- <classname>Zend_Json_Server_Smd_Service</classname>; también
- puede pasar toda la información como un array a los diversos
- mutators de servicios en <classname>Zend_Json_Server_Smd</classname>,
- y que instanciará on objeto de servicio por usted.
- Los objetos de servicio contienen información como el nombre del
- servicio (típicamente, la función o el nombre del método), los
- parámetros (nombres, tipos y posición), y el tipo del valor de
- retorno. Opcionalmente, cada servicio puede tener su propio
- objetivo y envoltura, aunque esta funcionalidad rara vez es utilizada.
- </para>
- <para>
- <classname>Zend_Json_Server</classname> Realmente todo esto
- sucede entre bambalinas para usted, utilizando reflexión sobre
- las clases y funciones agregadas; debe crear su propio servicio
- de mapas sólo si necesita brindar funcionalidad personalizada que
- la introspección de clase y función no puede ofrecer.
- </para>
- <para>
- Los métodos disponibles en <classname>Zend_Json_Server_Smd</classname> incluyen:
- </para>
- <itemizedlist>
- <listitem><para><methodname>setOptions(array $options)</methodname>: Establecer
- un objeto SMD desde un array de opciones. Todos los
- mutators (métodos comenzando con 'set') se pueden usar
- como claves.</para></listitem>
- <listitem><para><methodname>setTransport($transport)</methodname>: Establecer
- el transporte usado para acceder al servicio; únicamente
- POST es actualmente soportado.</para></listitem>
- <listitem><para><methodname>getTransport()</methodname>: Obtener el servicio
- de transporte actual.</para></listitem>
- <listitem><para><methodname>setEnvelope($envelopeType)</methodname>:
- Establecer la envoltura de la solicitud que debería ser
- utilizada para acceder al servicio. Actualmente las
- constantes soportadas son
- <classname>Zend_Json_Server_Smd::ENV_JSONRPC_1</classname> y
- <classname>Zend_Json_Server_Smd::ENV_JSONRPC_1</classname>.</para></listitem>
- <listitem><para><methodname>getEnvelope()</methodname>: Obtener la envoltura
- de la petición actual.</para></listitem>
- <listitem><para><methodname>setContentType($type)</methodname>: Establecer
- el tipo de contenido que deben utilizar las solicitudes
- (por defecto, es 'application/json»).</para></listitem>
- <listitem><para><methodname>getContentType()</methodname>: Conseguir el
- tipo del contenido actual para las solicitudes al
- servicio.</para></listitem>
- <listitem><para><methodname>setTarget($target)</methodname>: Establecer el
- punto final de la URL para el servicio.</para></listitem>
- <listitem><para><methodname>getTarget()</methodname>: Obtener el punto final
- de la URL para el servicio.</para></listitem>
- <listitem><para><methodname>setId($id)</methodname>: Normalmente, este es el
- punto final de la URL del servicio (igual que el
- objetivo).</para></listitem>
- <listitem><para><methodname>getId()</methodname>: Recuperar el ID del servicio
- (normalmente el punto final de la URL del servicio).
- </para></listitem>
- <listitem><para><methodname>setDescription($description)</methodname>:
- Establecer una descripción del servicio (típicamente
- información narrativa que describe el propósito del
- servicio).</para></listitem>
- <listitem><para><methodname>getDescription()</methodname>: Obtener la
- descripción del servicio.</para></listitem>
- <listitem><para><methodname>setDojoCompatible($flag)</methodname>:
- Establecer un flag que indique si el SMD es compatible
- o no con el toolkit de Dojo. Cuando sea verdadero, el
- JSON SMD será formateado para cumplir con el formato que
- espera el cliente de Dojo JSON-RPC.</para></listitem>
- <listitem><para><methodname>isDojoCompatible()</methodname>: Devuelve el valor
- del flag de compatibilidad de Dojo (falso, por defecto).
- </para></listitem>
- <listitem><para><methodname>addService($service)</methodname>: Añade un
- servicio al mapa. Puede ser un array de información a
- pasar al constructor de
- <classname>Zend_Json_Server_Smd_Service</classname>, o
- una instancia de esa clase.</para></listitem>
- <listitem><para><methodname>addServices(array $services)</methodname>:
- Agrega múltiples servicios a la vez.</para></listitem>
- <listitem><para><methodname>setServices(array $services)</methodname>:
- Agrega múltiples servicios a la vez, sobreescribiendo
- cualquiera de los servicios previamente establecidos.
- </para></listitem>
- <listitem><para><methodname>getService($name)</methodname>: Ontiene el servicio
- por su nombre.</para></listitem>
- <listitem><para><methodname>getServices()</methodname>: Obtener todos los
- servicios agregados.</para></listitem>
- <listitem><para><methodname>removeService($name)</methodname>: Elimina un
- servicio del mapa.</para></listitem>
- <listitem><para><methodname>toArray()</methodname>: Mandar el mapa de servicio
- a un array.</para></listitem>
- <listitem><para><methodname>toDojoArray()</methodname>: Mandar el mapa de servicio
- a un array compatible con Dojo Toolkit.</para></listitem>
- <listitem><para><methodname>toJson()</methodname>: Mandar el mapa de servicio
- a una representación JSON.</para></listitem>
- </itemizedlist>
- <para>
- <classname>Zend_Json_Server_Smd_Service</classname> tiene los
- siguientes métodos:
- </para>
- <itemizedlist>
- <listitem><para><methodname>setOptions(array $options)</methodname>:
- Establecer el estado del objeto dede un array. Cualquier
- mutator (métodos comenzando con 'set') puede ser utilizado
- como una clave y establecerlo mediante este método.
- </para></listitem>
- <listitem><para><methodname>setName($name)</methodname>: Establecer el nombre
- del servicio (típicamente, la función o el nombre del
- método).</para></listitem>
- <listitem><para><methodname>getName()</methodname>: Recuperar el nombre del
- servicio.</para></listitem>
- <listitem><para><methodname>setTransport($transport)</methodname>: Establecer
- el servicio de transporte (actualmente, sólo transportes
- apoyados por <classname>Zend_Json_Server_Smd</classname>
- son permitidos).</para></listitem>
- <listitem><para><methodname>getTransport()</methodname>: Recuperar el transporte
- actual.</para></listitem>
- <listitem><para><methodname>setTarget($target)</methodname>: Establecer el
- punto final de la URL del servicio (típicamente, este
- será el mismo que el SMD en general, al cual el servicio
- está agregado).</para></listitem>
- <listitem><para><methodname>getTarget()</methodname>: Obtener el punto final
- de la URL del servicio.</para></listitem>
- <listitem><para><methodname>setEnvelope($envelopeType)</methodname>:
- Establecer la envoltura del servicio (actualmente, sólo
- se permiten las envolturas soportadas por
- <classname>Zend_Json_Server_Smd</classname>.</para></listitem>
- <listitem><para><methodname>getEnvelope()</methodname>: Recuperar el tipo de
- envoltura del servicio.</para></listitem>
- <listitem><para><methodname>addParam($type, array $options = array(),
- $order = null)</methodname>: Añadir un parámetro para el
- servicio. Por defecto, sólo el tipo de parámetro es necesario.
- Sin embargo, también puede especificar el orden, así como
- opciones tales como:</para>
- <itemizedlist>
- <listitem><para><emphasis>name</emphasis>: el nombre del
- parámetro</para></listitem>
- <listitem><para><emphasis>optional</emphasis>: cuándo
- el parámetro es opcional o no</para></listitem>
- <listitem><para><emphasis>default</emphasis>: un valor
- por defecto para el parámetro</para></listitem>
- <listitem><para><emphasis>description</emphasis>: texto
- describiendo el parámetro</para></listitem>
- </itemizedlist>
- </listitem>
- <listitem><para><methodname>addParams(array $params)</methodname>: Agregar
- varios parámetros a la vez; cada param debería ser un array
- asociativo conteniendo mínimamente la clave 'type' describiendo
- el tipo de parámetro y, opcionalmente la clave 'order';
- cualquiera de las otras claves serán pasados como
- <methodname>$options</methodname> a <methodname>addOption()</methodname>.</para></listitem>
- <listitem><para><methodname>setParams(array $params)</methodname>:
- Establecer muchos parámetros a la vez, sobrescribiendo
- cualquiera de los parámetros existentes.</para></listitem>
- <listitem><para><methodname>getParams()</methodname>: Recuperar todos los
- parámetros actualmente establecidos.</para></listitem>
- <listitem><para><methodname>setReturn($type)</methodname>: Establecer el tipo
- del valor de retorno del servicio.</para></listitem>
- <listitem><para><methodname>getReturn()</methodname>: Obtener el tipo del
- valor de retorno del servicio.</para></listitem>
- <listitem><para><methodname>toArray()</methodname>: Mandar el servicio a un
- array.</para></listitem>
- <listitem><para><methodname>toJson()</methodname>: Mandar el servicio a una
- representación JSON.</para></listitem>
- </itemizedlist>
- </sect3>
- </sect2>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|