2026-04-09 16:14:59 +00:00
2026-04-09 18:14:09 +02:00
2026-04-09 18:14:09 +02:00
2026-04-09 18:14:09 +02:00
2026-03-20 11:40:11 +01:00

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 Route en remplissant tous les champs, ou bien la méthode Controller::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 /test voulu par l'utilisateur, il va déclencher la méthode new TestController()->test().
Description
Projet fait dans le cadre de mes études en L2 Informatique.
Readme 640 KiB
Languages
PHP 80.4%
JavaScript 11.4%
CSS 8.2%