(PECL yar >= 1.0.0)
Yar_Server::handle — Inicia el servidor RPC
Empieza a atender la petición RPC entrante.
Nota:
Las llamadas RPC habituales se emiten como peticiones HTTP POST. Si en su lugar se emite una petición HTTP GET, se muestra la página de información del servicio, generada a partir de los métodos públicos y de sus bloques de documentación del objeto ejecutor. Este comportamiento se puede desactivar con la directiva yar.expose_info, en cuyo caso una petición GET lanza una Yar_Server_Exception.
Nota:
A partir de Yar 2.3.0, el objeto ejecutor puede definir los métodos mágicos protegidos
__infoy__authpara personalizar la página de información del servicio y para autenticar las peticiones; véase Yar_Server::__construct() para más detalles.
Esta función no contiene ningún parámetro.
Devuelve true.
| Condición | Excepción |
|---|---|
| El método remoto lanzó una excepción. |
Yar_Server_Exception (con el nombre
de clase original en su propiedad _type).
|
| El método remoto no se encontró o no es público. | Yar_Server_Request_Exception. |
| El cuerpo de la petición no se pudo desempaquetar. | Yar_Server_Packager_Exception. |
| La petición está mal formada a nivel de protocolo. | Yar_Server_Protocol_Exception. |
| La salida del servidor no se pudo capturar. | Yar_Server_Output_Exception. |
| La autenticación falló, o se solicitó la página de información mientras yar.expose_info está desactivada. |
Yar_Server_Exception con el código
YAR_ERR_FORBIDDEN.
|
Ejemplo #1 Ejemplo de Yar_Server::handle()
<?php
class API {
/**
* El bloque de documentación se muestra en la página de información del servicio.
* @param string $parameter
* @return string
*/
public function some_method($parameter, $option = "foo") {
return "some_method";
}
protected function client_can_not_see() {
}
}
$service = new Yar_Server(new API());
$service->handle();
?>Ejemplo #2 Personalización de la página de información del servicio con
__info (a partir de Yar 2.3.0)
<?php
class API {
public function some_method($parameter, $option = "foo") {
return "some_method";
}
/*
* Debe ser protected. Se llama en las peticiones GET con el marcado de
* la página que Yar mostraría en otro caso, y el valor de cadena que
* devuelve se envía al cliente en su lugar.
*/
protected function __info($markup) {
return "Hola mundo";
}
}
$service = new Yar_Server(new API());
$service->handle();
?>