Démarrage rapide

En supposant que XRL est correctement installé sur votre ordinateur, vous pouvez à présent coder des clients et serveurs XML-RPC.

Coder un client XML-RPC

  1. Chargez et enregistrez le chargeur automatique [1]

    require_once('/path/to/XRL/src/Autoload.php');
    \fpoirotte\XRL\Autoload::register();
    
  2. Créez le nouveau client en le configurant pour qu’il interroge le serveur XML-RPC distant

    $client = new \fpoirotte\XRL\Client("http://xmlrpc.example.com/server");
    
  3. Appelez une méthode fournie par ce serveur, comme vous le feriez avec n’importe quel autre code

    // Call the remote procedure named "hello",
    // with "world" as its parameter.
    $result = $client->hello('world');
    
    // $result now contains the remote procedure's result,
    // as a regular PHP type (integer, string, double, array, etc.)
    var_dump($result); // string(12) "hello world!"
    
    // Methods with names that are not valid PHP identifiers
    // can still be called!
    var_dump($client->{'string.up'}('game over')); // string(9) "GAME OVER"
    

Coder un serveur XML-RPC

  1. Chargez et enregistrez le chargeur automatique [1]

    require_once('/path/to/XRL/src/Autoload.php');
    \fpoirotte\XRL\Autoload::register();
    
  2. Créez une nouvelle instance de serveur

    $server = new \fpoirotte\XRL\Server();
    
  3. Attachez quelques méthodes à ce serveur

    • Vous pouvez attacher des fonctions anonymes, des closures, des fonctions globales, des méthodes publiques d’objets, etc. en utilisant l’opérateur d’accès aux attributs ->. Vous pouvez même utiliser des objets invocables !

      class Simpson
      {
          private $speech = array(
              'Homer'     => 'Doh!',
              'Marge'     => 'Hmm...',
              'Bart'      => 'Aie, caramba!',
              'Lisa'      => M_PI,
              'Maggie'    => null,
          );
          private $character;
      
          public function __construct($character)
          {
              if (!array_key_exists($character, $this->speech)) {
                  throw new InvalidArgumentException("Who's that?");
              }
              $this->character = $character;
          }
      
          public function __invoke()
          {
              return $this->speech[$this->character];
          }
      }
      $server->homer  = new Simpson('Homer');
      $server->marge  = new Simpson('Marge');
      $server->bart   = new Simpson('Bart');
      $server->lisa   = new Simpson('Lisa');
      $server->maggie = new Simpson('Maggie');
      
    • Ou bien, vous pouvez utiliser la syntaxe des tableaux [] à la place. Il s’agit de l’approche recommandée car elle évite des conflits potentiels avec les attributs internes de XRL et simplifie l’utilisation de noms de méthodes qui ne sont pas des identifiants PHP valides.

      $server['hello'] = function ($s) { return "Hello $s!"; };
      $server['string.up'] = 'strtoupper';
      
  4. Traitez les requêtes XML-RPC qui arrivent et publiez les résultats

    $server->handle()->publish();
    
[1](1, 2) Les utilisateurs du gestionnaire de dépendances Composer doivent utiliser le chargeur automatique habituel se trouvant dans vendor/autoload.php à la place.