You are reading the documentation for the 2.x version. Switch to the current version 3.x.
Commands
You can create some commands to call your functions or services to automate some jobs in crontab for example.
Create a command
You need to implement \Berlioz\Cli\Core\Command\CommandInterface interface or extends
\Berlioz\Cli\Core\Command\AbstractCommand abstract class.
Representation of the interface:
use Berlioz\Cli\Core\Console\Environment;
/**
* Interface CommandInterface.
*/
interface CommandInterface
{
/**
* Get description.
*
* @return string|null
*/
public static function getDescription(): ?string;
/**
* Get help.
*
* @return string|null
*/
public static function getHelp(): ?string;
/**
* Run command.
*
* @param Environment $env
*
* @return int
*/
public function run(Environment $env): int;
}
Arguments
Arguments must be declared with PHP 8 attributes, example:
use Berlioz\Cli\Core\Command\Argument;
use Berlioz\Cli\Core\Command\CommandInterface;
use Berlioz\Cli\Core\Console\Environment;
#[Argument('argument1', prefix: 'a', longPrefix: 'arg')]
#[Argument('argument2', longPrefix: 'arg2')]
class MyCommand implements CommandInterface
{
// ...
public function run(Environment $env): int
{
$env->getArgument('argument1'); // Get the argument 1
$env->getArgument('argument2'); // Get the argument 2
// ...
}
}
Options for arguments:
| Name | Type | Description |
|---|---|---|
| name | string | Name of argument |
| prefix | string (default: null) | Prefix (one character) |
| longPrefix | string (default: null) | Long prefix |
| description | string (default: null) | Description, used for –help |
| defaultValue | mixed (default: null) | Default value |
| required | bool (default: false) | If argument is required |
| noValue | bool (default: false) | If argument has no value |
| castTo | string (default: null) | Cast to a specified type |
Declare a command
You need to declare each commands in a commands.json file in
your configuration directory.
Example of file:
{
"commands": {
"myproject:foo": "\\MyProject\\Command\\FooCommand",
"myproject:bar": "\\MyProject\\Command\\BarCommand"
}
}
Call a command
An executable is available in the binary directory of Composer to call commands.
Examples:
$ cd /my/project/directory
$ vendor/bin/berlioz myproject:foo
Printed result!
$ vendor/bin/berlioz myproject:bar --arg1 "Test" -aze
Printed result of second command!