
Je présente aujourd’hui un projet commencé pour mon mémoire de fin d’études, puis mis en pause, puis repris, puis complètement réécris …
Il s’agit d’une librairie qui permet de générer des interfaces utilisateurs en écrivant uniquement du PHP (ou presque :p).
Le but est de simplifier la vie aux développeurs qui souhaitent générer dynamiquement du code HTML/CSS ou Javascript côté serveur.
A l’heure actuelle, le support du CSS et du Javascript est en cours d’implémentation/optimisation.
La librairie se veut 100% objet PHP5, utilise les namespaces, est facilement extensible via une abstraction de la plupart de ses fonctionnalités, supporte l’autoload, utilise le pattern Observer etc …
De plus un support particulier des frameworks CSS 960gs et Blueprint a été implémenté (via le système d’abstraction, donc applicable à d’autres frameworks/librairies) afin de réellement faciliter la mise en place d’interfaces aux développeurs.
Si vous souhaitez plus d’infos sur les frameworks cités : 960gs, Blueprint.
Un petit exemple de code :
$blue = PHPUi::getInstance()->blueprint(array('class' => 'container', 'id' => 'blueprint'));
$blue->addChild(new Xhtml\Element('h2', array('span' => 24), true, '24 Column Grid - Blueprint'));
$blue->addChild(new Xhtml\Element('div', array('notice' => true), true, 'This is a div with class notice'));
$blue->addChild(new Xhtml\Element('div', array('error' => true), true, 'This is a div with class error'));
$blue->jquery()->click(
$blue->jquery()->ajax(
array(
'url' => 'ajax.php',
'type' => 'POST',
'dataType' => 'html',
'success' => 'function(data) { $("#blueprint").append(data); }'
)
)
);
On créé ici un nouvel élément utilisant l’adapter Blueprint, on peut donc directement initialiser des div de type error, notice ou alert en passant le paramètre à true. On applique ensuite un filtre jQuery qui au clic sur la div lancera un appel AJAX avec les paramètres donnés.
La librairie se charge ensuite de générer le code correspondant aux appels effectués.
Sachez qu’il est également possible de charger/décharger un ensemble d’éléments via un système d’adapter.
Exemple avec notre élément $blue de tout à l’heure :
$dump = Xhtml\Dumper\DumperJson::dump( $blue );
$loaderJson = new Xhtml\Loader\LoaderJson(array('content' => $dump));
echo $loaderJson->load();
Ici on dump et on load un élément en JSON mais à terme il sera possible d’exporter/charger via n’importe quel format puisqu’il est possible de définir ses propres classes.
Si vous souhaitez regarder les exemples ou bien le code de la librairie, un dépôt Github existe :
https://github.com/seiyar81/phpui
La librairie est toujours en cours de développement, je suis donc ouvert aux propositions d’améliorations ou aux fonctionnalités à implémenter.