Skip to main content
Version: 9.x

Commands

Definition

Commands:

  • 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.

Principles

  • Containers 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 Samples

Example: 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 Execution

To Schedule the execution of a Command checkout the Tasks Scheduling page.

Define Consoles Routes

To define Console route go to app/Ship/Commands/Routes.php.