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
// Fichier config/test.php
<?php return [
'cle_1' => "Val1",
'cle_2' => "Val2",
// ...
] ?>
- 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
Routeen remplissant tous les champs, ou bien la méthodeController::Route()qui va préremplir certains champs. - Exemple de Controller
class TestController extends Controller {
public static function defineRoutes(): array {
return [
self::Route( routeUrl: '/test', routeName: "Test", routeAction: "test" ),
new Route( routeUrl: "/test2", routeName: "Test2", routeController: "TestController", routeAction: "test2", routeMethods = [ 'GET' ] )
];
}
public function test(){
echo "Je suis déclenché lorsque j'atteinds la route /test";
}
public function test2(){
echo "Je suis déclenché lorsque j'atteinds la route /test2 !!!";
}
}
- 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
/testvoulu par l'utilisateur, il va déclencher la méthodenew TestController()->test().
Description
Languages
PHP
80.4%
JavaScript
11.4%
CSS
8.2%