Fork me on GitHub

Traiter les requêtes Jaxon


Quelque soit le nombre de classes PHP qu'elle exporte vers javascript, une application qui utilise la librairie Jaxon a besoin d'un seul point d'entrée pour toutes les requêtes vers ces classes.

Le code le plus simple pour traiter une requête vers une classe Jaxon est le suivant:

use function Jaxon\jaxon;

$jaxon = jaxon();
$jaxon->register(Jaxon::CALLABLE_CLASS, HelloWorld::class);

if($jaxon->canProcessRequest())
{
    $jaxon->processRequest();
}

La méthode processRequest() appelle la fonction ou la classe indiquée dans la requête et renvoie la réponse retournée au client.

Un exemple plus complet

Dans l'exemple suivant, le code va être organisé dans plusieurs fichiers, pour donner un exemple plus complet de l'utilisation de Jaxon.

1. La déclaration des classes

Ce fichier contient une classe à appeler avec Jaxon. Il peut y en avoir plusieurs ainsi dans l'application.

// File HelloWorld.php

use function Jaxon\jaxon;

class HelloWorld
{
    public function sayHello($isCaps)
    {
        $text = ($isCaps) ? 'HELLO WORLD!' : 'Hello World!';
        $response = jaxon()->newResponse();
        $response->alert($text);
        return $response;
    }
}
2. L'initialisation de la librairie

Ce fichier définit les options de configuration de la librairie.

// File setup.php
use function Jaxon\jaxon;

$jaxon = jaxon();

$jaxon->setOption('core.request.uri', 'ajax.php');

$jaxon->register(Jaxon::CALLABLE_CLASS, HelloWorld::class, ['include' => __DIR__ . '/HelloWorld.php']);

Le troisième paramètre de l'appel sert à retrouver la classe HelloWorld. Il est optionnel et n'est pas requis si un autre moyen existe dans l'application pour retrouver la classe, par exemple l'autoloading.

3. La génération du code javascript

Les codes javascript et CSS générés par Jaxon doivent être insérés dans le code HTML de la page à afficher dans le navigateur.

Rappelons qu'ils sont obtenus par les appels à $jaxon->getCss(), $jaxon->getJs() et $jaxon->getScript().

use function Jaxon\jaxon;

$jaxon = jaxon();

$jaxonCss = $jaxon->getCss();
$jaxonJs = $jaxon->getJs();
$jaxonScript = $jaxon->getScript();

Ils doivent ensuite être insérés dans le code HTML de la page, comme dans l'exemple suivant.

<!doctype html>
<html>
<head>
    <title>Jaxon Simple Test</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="/favicon.ico">

<?php echo $jaxonCss ?>

</head>
<body>
    <input type="button" value="Submit" onclick="JaxonHelloWorld.sayHello(1);return false;" />
</body>

<?php echo $jaxonJs ?>

<?php echo $jaxonScript ?>

</html>
4. Le traitement des requêtes

Ce fichier traite les requêtes Jaxon.

<?php
// File ajax.php
use function Jaxon\jaxon;

require __DIR__ . '/setup.php';

$jaxon = jaxon();

if($jaxon->canProcessRequest())
{
    $jaxon->processRequest();
}