Parlons-en – Construire un Framework PHP Modulaire, partie 2

Auteur(s) : Louis Ouellet


Il est temps pour la partie 2 ! Dans la partie précédente, nous avons mis en place la base de notre framework PHP modulaire. Cette fois-ci, nous allons nous concentrer sur l’expansion de ses capacités pour prendre en charge les objectifs suivants :

  • Ajouter la prise en charge d’extensions
  • Commencer à mettre en œuvre un module en ligne de commande (CLI)
  • Ajouter la prise en charge de modèles (models) pour créer des méthodes partagées nécessitant une base de données
  • Ajouter la prise en charge de helpers pour créer des méthodes partagées ne nécessitant pas de base de données

Ces améliorations nous offriront la flexibilité dont nous avons besoin pour construire des applications modulaires, maintenables et extensibles. Passons en revue chaque mise à jour étape par étape.

Mise à jour du Bootstrap

Nous allons commencer par mettre à jour la classe Bootstrap afin d’inclure les helpers et les models. Nous avons également changé la classe par défaut de CLI pour LaswitchTech\Core\CLI afin de pouvoir commencer à y travailler avant de l’exporter dans son propre module.

Source: Bootstrap.php

Mise à jour de la classe Request

Ensuite, mettons à jour la classe Request afin qu’elle puisse gérer les arguments de la ligne de commande. Dans le constructeur, nous stockons la variable globale $argv dans une propriété Arguments (avec un tableau vide par défaut).

Source: Request.php

Nous ajoutons ensuite une méthode getArguments() pour récupérer les arguments et déplaçons toutes les méthodes de demande d’entrée utilisateur (auparavant dans coreCLI) vers cette classe.

Mise à jour de la classe Output

Nous devons également mettre à jour la classe Output afin de gérer à la fois la sortie dans le navigateur et en ligne de commande. Voici un exemple de détection CLI (STDIN) et de messages colorés.

Source: Output.php

Mise en place des Helpers

Les helpers fournissent de petites méthodes réutilisables. Pour cela, nous créons d’abord une classe de base Helper qui pourra être étendue si nous avons besoin de propriétés ou de méthodes communes à l’avenir.

Source: Helper.php

Ensuite, nous implémentons la classe principale Helpers qui charge dynamiquement les fichiers helper individuels depuis votre application et depuis les plugins.

Source: Helpers.php

Mise en place des Models

Les models fonctionnent de manière similaire aux Helpers, mais nécessitent généralement une connexion à la base de données. Nous stockons une référence à l’objet global $DATABASE dans la classe de base Model.

Source: Modal.php

Tout comme les Helpers, la classe Models charge dynamiquement tous les modèles depuis votre dossier /Model et les répertoires de plugins :

Source: Modals.php

Mise en place du module Command-Line

Pour mettre en place une interface en ligne de commande (CLI), nous allons créer une classe Command que les développeurs pourront étendre. Ensuite, nous ajouterons une classe CLI qui identifiera et exécutera les commandes et les actions.

Classe de base Command

Source: Command.php

Classe CLI

Source: CLI.php

Tester le code : création d’un plugin "debug"

Créons un plugin simple nommé debug dans /lib/plugins/debug/Command.php. Cela démontre comment définir des commandes personnalisées prises en charge par notre nouvelle infrastructure CLI :

Source: Command.php

Exécuter la CLI

Voici un script d’exemple debug.php dans un dossier tmp/ pour tester la CLI. Rendez-le exécutable (``chmod +x tmp/debug.php``) et lancez-le ainsi : ``./tmp/debug.php debug execute``

Source: debug.php

Exemple de sortie

Lorsque vous exécutez :

./tmp/debug.php debug execute

Vous devriez voir quelque chose comme :

Variable Name: BOOTSTRAP = LaswitchTech\Core\Bootstrap
Variable Name: REQUEST = LaswitchTech\Core\Request
Variable Name: CLI = LaswitchTech\Core\CLI
Variable Name: CONFIG = LaswitchTech\Core\Config
Variable Name: LOG = LaswitchTech\Core\Log
Variable Name: OUTPUT = LaswitchTech\Core\Output
Variable Name: NET = LaswitchTech\Core\Strap
Variable Name: HELPER = LaswitchTech\Core\Helpers
Variable Name: DATABASE = LaswitchTech\Core\Strap
Variable Name: MODEL = LaswitchTech\Core\Models
Variable Name: LOCALE = LaswitchTech\Core\Strap
Variable Name: SLS = LaswitchTech\Core\Strap
Variable Name: SMS = LaswitchTech\Core\Strap
Variable Name: SMTP = LaswitchTech\Core\Strap
Variable Name: IMAP = LaswitchTech\Core\Strap
Variable Name: INSTALLER = LaswitchTech\Core\Strap
 
Host: localhost
 
Parameter:
 
CLI:
Debugging...
 
End of Script

Conclusion

Dépôt GitHub

Dépôt GitHub - v0.0.7

Dans cette deuxième partie de notre série, nous avons étendu notre framework PHP modulaire pour prendre en charge les opérations en ligne de commande, les classes helper et les models. En créant une classe générique CLI et une classe Command de base, nous pouvons facilement étendre le framework avec de nouvelles commandes et actions. L’ajout des Helpers et des Models offre un moyen plus propre et mieux organisé de partager du code dans votre application, ce qui facilite la maintenance et l’extension des fonctionnalités sans duplication de code.

Notre framework commence à prendre forme avec une séparation claire des responsabilités et la flexibilité d’ajouter ou de supprimer des fonctionnalités selon les besoins. Dans les parties à venir, nous continuerons à peaufiner notre framework, éventuellement en intégrant une journalisation plus robuste, une gestion de configuration plus avancée et d’autres modules qui pourront encore simplifier le développement.

Tags

Discussion

Entrer votre commentaire. La syntaxe wiki est autorisée:
E​ U J Q N