(PECL yar >= 1.0.0)
Yar_Server::handle — Démarre le serveur RPC
Démarre le traitement de la requête RPC entrante.
Note:
Les appels RPC habituels sont émis sous forme de requêtes HTTP POST. Si une requête HTTP GET est émise à la place, la page d'informations du service, générée à partir des méthodes publiques et de leurs commentaires de documentation de l'objet exécuteur, est affichée. Ce comportement peut être désactivé avec la directive yar.expose_info, auquel cas une requête GET lance une Yar_Server_Exception.
Note:
À partir de Yar 2.3.0, l'objet exécuteur peut définir les méthodes magiques protégées
__infoet__authpour personnaliser la page d'informations du service et authentifier les requêtes ; voir Yar_Server::__construct() pour les détails.
Cette fonction ne contient aucun paramètre.
Retourne true.
| Condition | Exception |
|---|---|
| La méthode distante a lancé une exception. |
Yar_Server_Exception (avec le nom
de la classe d'origine dans sa propriété _type).
|
| La méthode distante n'a pas été trouvée ou n'est pas publique. | Yar_Server_Request_Exception. |
| Le corps de la requête n'a pas pu être décodé. | Yar_Server_Packager_Exception. |
| La requête est mal formée au niveau du protocole. | Yar_Server_Protocol_Exception. |
| La sortie du serveur n'a pas pu être capturée. | Yar_Server_Output_Exception. |
| L'authentification a échoué, ou la page d'informations a été demandée alors que yar.expose_info est désactivée. |
Yar_Server_Exception avec le code
YAR_ERR_FORBIDDEN.
|
Exemple #1 Exemple avec Yar_Server::handle()
<?php
class API {
/**
* Le bloc de documentation est affiché sur la page d'informations du service.
* @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();
?>Exemple #2 Personnalisation de la page d'informations du service avec
__info (à partir de Yar 2.3.0)
<?php
class API {
public function some_method($parameter, $option = "foo") {
return "some_method";
}
/*
* Doit être protected. Cette méthode est appelée sur les requêtes GET avec
* le balisage de la page que Yar aurait autrement produite, et la chaîne
* qu'elle retourne est envoyée au client à la place.
*/
protected function __info($markup) {
return "Hello world";
}
}
$service = new Yar_Server(new API());
$service->handle();
?>