Table des matières
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.
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).
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.
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.
Ensuite, nous implémentons la classe principale Helpers
qui charge dynamiquement les fichiers helper individuels depuis votre application et depuis les plugins.
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
.
Tout comme les Helpers, la classe Models
charge dynamiquement tous les modèles depuis votre dossier /Model
et les répertoires de plugins :
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
Classe CLI
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 :
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``
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
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