Console Bow Framework
Introduction​
La console de Bow Framework est un outil puissant qui vous permet d'accélérer votre développement. Elle offre un ensemble de commandes pratiques pour générer des classes, tester votre application localement, gérer vos bases de données et bien plus encore.
Toutes les commandes s'exécutent depuis la racine de votre application avec la syntaxe : php bow <commande>
Commandes de génération​
Ces commandes vous aident à créer rapidement des éléments fondamentaux pour votre application :
| Commande | Description |
|---|---|
generate:resource | Crée un contrôleur REST complet. Exemple : php bow generate:resource UserController |
generate:key | Génère une nouvelle clé de sécurité pour l'application |
generate:session-table | Crée une migration pour la table des sessions |
generate:notification-table | Crée une migration pour la table des notifications |
generate:cache-table | Crée une migration pour la table de cache |
generate:queue-table | Crée une migration pour la table des queues |
gen est l'alias de generate (et non de add). Les exemples ci-dessus
peuvent donc s'écrire :
php bow gen:resource UserController
php bow gen:key
Ajouter des composants​
Ces commandes permettent d'ajouter rapidement des composants Ă votre application :
Contrôleurs et Middleware​
| Commande | Description |
|---|---|
add:controller | Crée un nouveau contrôleur. Exemple : php bow add:controller OrderController |
add:middleware | Crée un nouveau middleware. Exemple : php bow add:middleware AuthMiddleware |
Modèles et Base de données​
| Commande | Description |
|---|---|
add:model | Crée un nouveau modèle. Exemple : php bow add:model Product |
add:migration | Crée une nouvelle migration. Exemple : php bow add:migration create_orders_table |
add:seeder | Crée un fichier de seeding. Exemple : php bow add:seeder UsersSeeder |
add:validation | Crée un nouveau validateur. Exemple : php bow add:validation UserValidation |
Services et Configuration​
| Commande | Description |
|---|---|
add:service | Crée un nouveau service. Exemple : php bow add:service PaymentService |
add:configuration | Crée un fichier de configuration. Exemple : php bow add:configuration payment |
add:exception | Crée une nouvelle exception. Exemple : php bow add:exception InvalidUserException |
Événements et Notifications​
| Commande | Description |
|---|---|
add:event | Crée un nouvel événement. Exemple : php bow add:event UserRegisteredEvent |
add:listener | Crée un écouteur d'événement. Exemple : php bow add:listener UserRegisteredListener |
add:notifier | Crée un nouveau notifier. Exemple : php bow add:notifier EmailNotifier |
Queue et Tâches​
| Commande | Description |
|---|---|
add:task | Crée une nouvelle tâche en file d'attente. Exemple : php bow add:task SendInvoiceTask |
add:scheduler | Crée une tâche planifiée (scheduler). Exemple : php bow add:scheduler CleanupScheduler |
add:command | Crée une commande console personnalisée. Exemple : php bow add:command ImportDataCommand |
Migrations​
Les migrations facilitent la gestion de l'évolution de vos bases de données :
| Commande | Description |
|---|---|
migrate | Applique toutes les migrations en attente |
migration:migrate | Alias de migrate |
migration:rollback | Annule la dernière migration |
migration:reset | Réinitialise toutes les migrations |
La commande migration:reset supprime toutes les données. Utilisez-la avec précaution en production.
Seeding​
Le seeding permet d'initialiser votre base de données avec des données :
| Commande | Description |
|---|---|
seed:all | Exécute tous les seeders |
seed:file [class] | Exécute un seeder spécifique. Exemple : php bow seed:file UsersSeeder |
Queue Worker​
Gérez vos jobs en file d'attente :
| Commande | Description |
|---|---|
run:worker | Lance le worker pour traiter les jobs |
flush:worker | Vide la queue (à utiliser avec précaution) |
Options disponibles pour run:worker :
--connection: Connexion à utiliser (beanstalkd,sqs,redis,database)--queue: Nom de la queue (défaut :default)--tries: Nombre maximum de tentatives par job--timeout: Timeout en secondes par job--sleep: Pause entre les jobs en secondes
php bow run:worker --queue=emails --tries=5
Scheduler​
Gérez les tâches planifiées. Le verbe est schedule (singulier), et il existe
cinq actions :
| Commande | Description |
|---|---|
schedule:run | Exécute les tâches dues une fois (idéal pour un cron toutes les minutes) |
schedule:work | Lance le scheduler en mode daemon (boucle continue) |
schedule:list | Liste toutes les tâches enregistrées |
schedule:next | Affiche le prochain horaire d'exécution pour chaque tâche |
schedule:test [class] | Exécute une tâche spécifique pour test |
# Exécuter une fois (pour cron)
php bow schedule:run
# Mode daemon (continue en boucle)
php bow schedule:work
# Visualiser
php bow schedule:list
php bow schedule:next
# Tester une tâche par nom de classe
php bow schedule:test App\\Tasks\\CleanupTask
Nettoyage du cache​
Ces commandes permettent de réinitialiser les caches :
| Commande | Description |
|---|---|
clear:view | Supprime le cache des vues compilées |
clear:cache | Supprime le cache général |
clear:session | Supprime le cache des sessions |
clear:log | Supprime les fichiers de log |
clear:all | Supprime tous les caches |
Serveur de développement​
| Commande | Description |
|---|---|
run:server | Lance un serveur web local |
run:console | Lance une console interactive (REPL) |
# Serveur sur le port par défaut (8080)
php bow run:server
# Serveur sur un port personnalisé
php bow run:server --port=3000
# Console interactive
php bow run:console
Créer une commande personnalisée​
1. Générer la classe​
php bow add:command SendReportCommand
Cette commande crée un fichier dans app/Commands/SendReportCommand.php :
<?php
namespace App\Commands;
use Bow\Console\AbstractCommand;
use Bow\Console\Color;
class SendReportCommand extends AbstractCommand
{
/**
* Méthode appelée quand la commande est invoquée. Le premier argument est
* le nom brut de la commande tel que tapé par l'utilisateur.
*/
public function process(): void
{
echo Color::green("Rapport envoyé avec succès !\n");
}
}
Pour une classe enregistrée comme commande, Bow appelle la méthode process().
Vous pouvez aussi enregistrer une closure (voir plus bas) — dans ce cas elle
reçoit (Argument $arg, Setting $setting).
2. Enregistrer la commande​
L'enregistrement se fait via Console::register() (statique) ou
$console->addCommand() (instance). Ces deux mĂ©thodes acceptent jusqu'Ă
quatre arguments :
use Bow\Console\Console;
use App\Commands\SendReportCommand;
Console::register(
'send:report', // Nom utilisé en ligne de commande
SendReportCommand::class, // Classe ou closure
'Envoie le rapport quotidien', // Description (affichée dans `php bow help`)
"\nUsage:\n php bow send:report [--to=...]\n" // Aide affichée par `php bow send:report help`
);
Vous pouvez placer ces appels dans un fichier de bootstrap dédié (déclaré dans
Setting::getBootstrap()), ou dans la méthode run() d'un service provider
(Bow\Configuration\Configuration).
3. Exécuter​
# Lancer la commande
php bow send:report
# Voir son aide
php bow send:report help
# La commande apparaît aussi dans la section "CUSTOM" de l'aide globale
php bow help
Pour des commandes simples vous pouvez enregistrer directement une closure :
Console::register('hello', function ($arg, $setting) {
echo "Hello, " . ($arg->getTarget() ?? 'world') . "\n";
});
Il manque quelque chose ?
Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.