Через властивість $signature: аргументи - у фігурних дужках, опції - з --.
protected $signature = 'reports:send
{user : ID користувача}
{period=month : day, week або month}
{--queue : Поставити надсилання в чергу}
{--format=pdf : Формат файлу}
{--tag=* : Можна передати кілька разів}';
php artisan reports:send 7 week --queue --format=csv --tag=sales --tag=q3
Що означають позначки:
{user}- обов'язковий аргумент,{user?}- необов'язковий,{period=month}- зі значенням за замовчуванням;{user*}- масив аргументів;{--queue}- перемикач (true, якщо передали),{--format=}чи{--format=pdf}- опція зі значенням;{--tag=*}- масив значень опції;- текст після
:- опис дляphp artisan help reports:send.
Читання в handle():
$userId = $this->argument('user');
$asCsv = $this->option('format') === 'csv';
Залежності беруть параметрами handle() - контейнер їх впровадить. Для обов'язкових аргументів, які зручно запитати інтерактивно, є інтерфейс PromptsForMissingInput.