Commands
- Definition
- Principles
- Rules
- Folder Structure
- Code Samples
- Schedule Commands Execution
- Define Consoles Routes
#
DefinitionCommands:
- is a laravel artisan command. Laravel has its own default commands, and you create your own as well.
- provides a way to interact with the Laravel app.
- a Command can be scheduled by a Task scheduler, like Cron Job or by the Laravel built-in wrapper of the Cron Job "laravel scheduler".
- Commands could be Closure based or Classes.
- "dispatch" is the term that is usually used to call a Command.
#
PrinciplesContainers MAY or MAY NOT have one or more Commands.
Every Command SHOULD call an Action to perform its job, and should not container any business logic.
Ship may contain Application general Commands.
#
Rules- All Commands MUST extend from
App\Ship\Parents\Commands\ConsoleCommand
.
#
Folder Structure - app - Containers - {container-name} - UI - CLI - Commands - SayHelloCommand.php - ... - Ship - Commands - GeneralCommand.php - ...
#
Code SamplesExample: a simple Command
<?php
namespace App\Containers\Welcome\UI\CLI\Commands;
use App\Ship\Parents\Commands\ConsoleCommand;
/** * Class SayWelcomeCommand * * @author Mahmoud Zalt <[email protected]> */class SayWelcomeCommand extends ConsoleCommand{
/** * The name and signature of the console command. * * @var string */ protected $signature = 'apiato:welcome';
/** * The console command description. * * @var string */ protected $description = 'Just saying Welcome.';
/** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); }
/** * Execute the console command. * * @return void */ public function handle() { $this->info('Welcome to apiato :)'); // green color // $this->line('Welcome to apiato :)'); // normal color }}
Usage from CLI (Terminal):
php artisan apiato:welcome
#
Schedule Commands ExecutionTo Schedule the execution of a Command checkout the Tasks Scheduling page.
#
Define Consoles RoutesTo define Console route go to app/Ship/Commands/Routes.php
.