Aller au contenu principal
Version: Canary đźš§

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.

Utilisation

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 :

CommandeDescription
generate:resourceCrée un contrôleur REST complet. Exemple : php bow generate:resource UserController
generate:keyGénère une nouvelle clé de sécurité pour l'application
generate:session-tableCrée une migration pour la table des sessions
generate:notification-tableCrée une migration pour la table des notifications
generate:cache-tableCrée une migration pour la table de cache
generate:queue-tableCrée une migration pour la table des queues
Alias

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​

CommandeDescription
add:controllerCrée un nouveau contrôleur. Exemple : php bow add:controller OrderController
add:middlewareCrée un nouveau middleware. Exemple : php bow add:middleware AuthMiddleware

Modèles et Base de données​

CommandeDescription
add:modelCrée un nouveau modèle. Exemple : php bow add:model Product
add:migrationCrée une nouvelle migration. Exemple : php bow add:migration create_orders_table
add:seederCrée un fichier de seeding. Exemple : php bow add:seeder UsersSeeder
add:validationCrée un nouveau validateur. Exemple : php bow add:validation UserValidation

Services et Configuration​

CommandeDescription
add:serviceCrée un nouveau service. Exemple : php bow add:service PaymentService
add:configurationCrée un fichier de configuration. Exemple : php bow add:configuration payment
add:exceptionCrée une nouvelle exception. Exemple : php bow add:exception InvalidUserException

Événements et Notifications​

CommandeDescription
add:eventCrée un nouvel événement. Exemple : php bow add:event UserRegisteredEvent
add:listenerCrée un écouteur d'événement. Exemple : php bow add:listener UserRegisteredListener
add:notifierCrée un nouveau notifier. Exemple : php bow add:notifier EmailNotifier

Queue et Tâches​

CommandeDescription
add:taskCrée une nouvelle tâche en file d'attente. Exemple : php bow add:task SendInvoiceTask
add:schedulerCrée une tâche planifiée (scheduler). Exemple : php bow add:scheduler CleanupScheduler
add:commandCré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 :

CommandeDescription
migrateApplique toutes les migrations en attente
migration:migrateAlias de migrate
migration:rollbackAnnule la dernière migration
migration:resetRéinitialise toutes les migrations
Attention

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 :

CommandeDescription
seed:allExé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 :

CommandeDescription
run:workerLance le worker pour traiter les jobs
flush:workerVide 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 :

CommandeDescription
schedule:runExécute les tâches dues une fois (idéal pour un cron toutes les minutes)
schedule:workLance le scheduler en mode daemon (boucle continue)
schedule:listListe toutes les tâches enregistrées
schedule:nextAffiche 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 :

CommandeDescription
clear:viewSupprime le cache des vues compilées
clear:cacheSupprime le cache général
clear:sessionSupprime le cache des sessions
clear:logSupprime les fichiers de log
clear:allSupprime tous les caches

Serveur de développement​

CommandeDescription
run:serverLance un serveur web local
run:consoleLance 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");
}
}
Méthode appelée

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
Closures

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.