Manipulation d'interfaces web.

Avatar du membre
Petit nouveau ! | 1 Messages

05 nov. 2018, 20:06

Bonjour à tous !

Je suis nouveau sur ce forum, et relativement profane en ce qui concerne PHP (ce n'est pas mon langage de développement principal), mais j'ai tout de même une contribution à vous soumettre.

Cette contribution consiste en une bibliothèque (PHP, bien entendu) de manipulation d'interfaces web. Grosso-modo, elle permet de manipuler le DOM tel qu'on le ferait coté front-end, généralement en JavaScript, mais coté back-end, et en PHP naturellement.

Pour vous en donner un rapide aperçu de son utilisation, voici le code source PHP de l'équivalent d'un "Hello, World!" écrit avec cette bibliothèque :

<?php
require "phar://Atlas.phar/Atlas.php";

class Hello extends Threaded {
 public function handle($dom, $action, $id) {
  switch ($action) {
  case "Connect":
   $dom->setLayout("", file_get_contents("Main.html"));
   $dom->focus("input");
   break;
  case "Typing":
   $dom->setContent("name", $dom->getContent($id));
   break;
  case "Clear":
   if ($dom->confirm("Are you sure?")) {
    $dom->setContents(["input" => "", "name" => ""]);
   }
   break;
  }
 }
}

function hello() {
 return new Hello();
}

Atlas::launch("Connect", 'hello');
?>

et voici le contenu du fichier HTML référencé dans le source ci-dessus :

<fieldset>
 <label>Name:</label>
 <input id="input" maxlength="20" placeholder="Enter a name here" type="text" data-xdh-onevent="input|Typing" />
 <button data-xdh-onevent="Clear">Clear</button>
 <hr />
 <h1>
  <span>Hello </span>
  <span style="font-style: italic;" id="name"></span>
  <span>!</span>
 </h1>
</fieldset>

Ce programme se lance avec la version CLI de PHP (avec pthreads) et en voici un aperçu :

Image

La démonstration en ligne de ce programme est accessible à l'adresse suivante : http://q37.info/runkit/Hello.

Vous trouverez plus d'informations, et en particulier d'autres exemples, à l'adresse http://atlastk.org.

Comme indiqué, je n'ai pas l'habitude de programmer en PHP, et je suis donc preneur de toutes remarques/suggestions/commentaires, notamment concernant l'API de la bibliothèque, la manière dont sont codés les exemples (je ne suis pas très au fait des règles de l'art en la matière), ainsi que la procédure d'installation.

P.S.: c'est un problème chez moi, où la mise en italique ne fonctionne pas ?
Consultant en ingénierie logicielle (http://q37.info/conseil)