L'idée que j'ai eu en lançant ce projet c'est d'avoir un équivalent php de l'architecture MVC d'ASP.NET ou de SPRING en me concentrant juste sur la partie CONTROLER + VUE.
Pour ceux qui ne connaissent pas, le principe est le suivant :
Ma vue c'est du HTML conforme XML avec certaines balises interprétées niveau server.
Exemple :
<html>
...
<boutton id="monBoutton" title="Clique sur moi" />
...
</html>
Du coup vous ne mettez aucun code PHP dans la partie design / votre template est en XHTML dirrectement et le comportement des données et dans une partie php qu'on nomera le code-behind.
Le principe du code behind est simple, c'est là que vous inter-agissez avec l'interface. Ce code se présente sous la forme d'une classe qui prend en charge à travers des événements l'interface.
Déjà premier point, le PHP n'est pas événementiel, du coup j'ai créé une syntaxe particulière de déclaration de fonctions.
Exemple de ce que ça peut donner :
<?php
class maPage {
function onLoad(&$sender, &$evt) Handle $this->Load {
$this->monBoutton->setTitle('Toto fais du sky');
}
function maFonctionClick(&$sender, &$evt) Handle $this->monBoutton->Click {
$this->monBoutton->setTitle('Hello world !');
}
}
?>
Cette version ne dispose pas d'un ensemble super grand de tags, mais ça viendra au fur et à mesure, dans le même style que la librairie ASP.NET.
Cette version prend déjà en charge :
- Les masters (voir référence en .NET)
Mise en page définissant un ensemble de zones de contenus (les placeholders)
- Les Web User Controls (voir référence en .NET) :
Composants sous forme de code behind et vue html, qu'on peut référencer dans n'importe quelle page.
- Extension du language PHP pour l'orienter en événementielle :
function monClick($sender, $args) Handles $this->btn1->Click {
...
}
- Les custom web controls :
Composants que sous forme de code behind directement chargés dans le framework - plus performants et bas niveau - cette librairie est à compléter et finir
- Fichier de config type web.config :
Permet la configuration du framework - principalement déclare les namespace des custom web controls mais d'autres options vont s'y greffer.
----
Le système est optimisé pour la vitesse d'execution, le moteur d'execution se trouvant au niveau du générateur de cache :
Le système de cache consiste à générer des fichiers PHP à executer, sur le même principe que smarty, du coup j'utilise le moteur php pour simplement interpréter.
Quelques exemples de codes pour voir ce que ça peut donner au niveau syntaxe :