Les recettes des Papis
Installation
- Décompressez l'archive du site.
- Pointez votre domaine sur le dossier "public".
- Modifiez les fichiers de configuration dans "config".
Informations pratiques sur le PHP.
- Ce site utilise le principe des routes. Afin de ne pas avoir x fichiers publiques identiques pour chaque page.
- Tout est géré par le fichier public/index.php.
- index.php va charger le Kernel (Noyau) de l'application.
- Le noyau fonctionne sur le principe d'élément unique. La méthode
Kernel::getInstance() va permettre d'avoir l'unique instance de la classe Kernel.
- Une fois
Kernel::getInstance()->init() déclenché, le noyau enregistre l'autoloading des fichiers, puis enregistre la configuration.
- La configuration sont des fichiers dans le dossier config/ qui vont renvoyer un tableau clé/valeur. Exemple
- Les fichiers de configuration sont chargés via la méthode
ConfigFactory::loadConfigFile() qui va vérifier si le fichier de configuration existe et le charge en conséquence.
- On enchaine ensuite sur le Router.
- Le Router est une classe utilitaire qui va permettre de faire le lien entre la route saisie
/test/... de l'utilisateur et les routes enregistrés par le site.
- Le Router va d'abord commencer par récupérer la route voulue par l'utilisateur.
- Puis, le router va rechercher tous les Controllers existants.
- Un Controller est une classe qui va permettre de définir les routes et de dire, qu'est-ce qui se passe quand je prends cette route. Les routes du Controller sont définis par la methode
Controller::defineRoutes()
- Pour définir les routes dans la méthode précédente, vous pouvez soit créer un objet
Route en remplissant tous les champs, ou bien la méthode Controller::Route() qui va préremplir certains champs.
- Exemple de Controller
- Retournons au routeur, pour chercher les controllers, il va scanner les fichiers du dossier src/Domain avec un Iterator Récursif. (Pour se simplifier un peu la tâche.)
- Il va traiter le nom du chemin absolu pour obtenir le nom de la classe, puis va vérifier si cette classe est une sous-classe de Controller.
- Après avoir trouvé tous les Controllers, il va récupérer toutes les routes de chaque controller.
- Enfin, il va vérifier si la route utilisateur correspond à une des routes dans sa liste, si ça correspond, le Router va charger la méthode
new {RouteController}()->{RouteAction}()
- Si par exemple, le router trouve la route
/test voulu par l'utilisateur, il va déclencher la méthode new TestController()->test().