Documentation du framework
Présentation du projet UTM
le framework PHP5 orienté objet developpé par dizagn est basé sur des concepts et des patterns simples et a nos yeux essentiels : tel que DRY, KISS afin de garder la simplicité de maintenance dans un minimum de composants, ou encore MVC pour assurer une séparation entre la logique metier de votre application , l'acces aux données, et la présentation de votre rendu. Ceci en fournissant les fonctionnalitées modernes d'un framework, ainsi qu'un systeme de gestion de plugins avancé. Il est léger, compact, rapide à prendre en main et suffisament modulaire pour s'adapter à tous types de projets. De nombreux plugins sont disponibles et sa structure ouverte vous permet de facilement intégré des librairies externes.
Premiers pas avec le framework
Les fichiers index.php
Il y a deux fichiers index.php. l'un situé dans le dossier "www/index.php" qui contient le demarrage du framework et l'autre qui contient une redirection vers le premier fichier index.php. Il s'agit d'une bonne pratique visant a empecher l'utilisateur web a remonter dans les dossier parent. L'ideal etant de poser un alias vers le fichier www/index.php. Pour ceci il faut voir la documentation correspondante a votre seveur web. Nous ne verrons que le fichier situé dans www/index.php car c'est lui qui nous interesse.
Les URLs
Certains éléments constituants la requete sont des mots clés permettant au framework de
connaitre les composants(Ex: controlleurs et vues) a charger. Les mots clés par defaut sont :
ctrl pour les controlleurs, act pour determiner l'action a
executer sur le controlleur et mod pour les modules permettant d'ajouter un
niveau supplémentaire dans la hierarchie des controlleurs.
Ces mots clés sont configurables dans le fichier de configuration du framework "utm.ini".
Voir les paramètres module, controller, action dans la section
"request"
La valeur par defaut des composants de la requete tel que "ctrl" et "act" est elle aussi
définie dans le fichier de config
Voir le paramètre "default" dans la section [core].
Dans cet exemple on appele l'action "delete" sur le controlleur "product" situé dans le module "admin" avec un parametre supplémentaire id=12
Configuration du framework
Fichier de configuration du framework : utm.ini
Fichier de configuration de l'applicatif web : config.ini
Dans ce fichier vous pouvez ajouter autant d'entrées que vous le désirez. Attention tout de même a ne pas surcharger celles d'un plugin par exemple
Les controlleurs
Création d'un controlleur
Tous les controleurs de l'application doivent étendre la classe "coreController" afin de profiter des fonctionnalités du framework, et posséder une methode "execute" Dans cette implémentation du MVC le controlleur est obligatoire. Le controleur peut redirigé vers un autre controleur(redirect) ou appelé un autre controleur (forward).
Les super-controlleurs
On s'apercoit que dans certains cas les controlleurs contiennent peu de choses, il est alors
fastidieux et inutile de créer autant de ces fichiers. La notion de supercontroller est alors
introduite, ce qui nous permet de réduire le nombre de fichier et de baisser le temps de
developpement d'un nouveau controleur. Le principe consiste a remplacer la methode
obligatoire execute d'un controlleur par le nom de l'action demandée, dans une classe dont la
syntaxe comporte uniquement le nom du controlleur et eventuellement d'un module.
Attention le nom de l'action ne peut etre un mot clé réservé de PHP comme
default par exemple
Les vues
Toutes les vues doivent étendre la classe coreView et posséder une methode "render". C'est la vue qui a la charge d'afficher son contenu avec eventuellement un systeme de template ou de layout. Ces éléments sont fournis par les librairies correspondantes, mais vous pouvez sans probleme ajouter vos propres librairies.
Les modèles
Création d'un modèle
Les modèles doivent étendre la classe coreModel afin de profiter des fonctionnalités du framework. La classe coreModel étend elle meme une classe de connexion et de manipulation de la base de données. La librairies par defaut s'appelle "db", elle est basé sur mysqli. Mais vous pouvez tres bien utiliser la librairie que vous voulez. pour cela la classe coreModel devra étendre votre classe et chaque modele que vous créérez pourra en hériter
Utilisation d'un modèle
la classe coreModel definit la methode factory permettant de renvoyer une instance de l'objet model passé en parametre. On peut ensuite utiliser les methodes du modèle sur l'objet fraichement instancié.
Les plugins et les evenements
Principe de fonctionnement des plugins
Les plugins permettent deux choses :
- Ajouter des fonctionnalités aux controleurs, aux vues, aux modeles, et aux autres plugins.
- Réagir à des evenements.
/!\ Attention /!\ L'ordre dans lequel vous enregistrez les plugins a une importance. Surtout si il réagisse a un evenement.
Enregistrement d'un plugin
Dans la page d'index vous devez enregistrer les plugins de la facon suivante pour qu'il soit pris en compte par le framework. le fichier du plugin doit etre placé dans le dossier : "/application/plugin" et le fichier de configuration du plugin si il existe dans "/application/config"
Ajout de fonctionnalités
Les plugins permettent d'ajouter des nouvelles fonctionnalités dans le framework et ensuite les mettre a disposition dans les composants que vous créez (Controleur, vue, modele, plugin) comme si il s'agissait d'une methode de cette classe.
Utilisation du plugin
Utilisation de notre nouvelle methode dans une vue.
Les evenements
Les evenements sont des actions déclenchés par le framework ou par l'utilisateur. Les plugins sont à l'écoute de ces evenements et se déclenche selon l'ordre dans lequel ils ont été enregsitrés dans le fichier index.php.
Evenements par defaut
onStart() :
onExecute() :
onEcho() :
onFinish() :
onError() :
Ajouter ses propres evenements
Vous pouvez créer vos propres evenements grace à la methode statique "emit" de "corePlugin". Ensuite il vous suffit de de définir la methode dans le plugin comme pour n'importe quel autre evenement. Cet evenement peut etre emis a partir d'un controleur d'une vue, d'un modele, d'un plugin ou de tout autre composant au cours de l'execution du framework. Par convention les evenements du framework commence par "on", mais ceci n'a rien d'obligatoire.

