Метод option
Метод option применяется внутри класса команды для получения значения опции, переданной при вызове команды. Опции позволяют передавать дополнительные параметры в консольную команду и могут быть как с обязательным значением, так и без него. Метод возвращает значение опции или null, если опция не была передана. В качестве единственного параметра передаётся имя опции.
Синтаксис
<?php
$this->option($name);
?>
Пример
Давайте создадим команду, которая принимает опцию '--limit' и выводит указанное количество пользователей:
<?php
namespace AppConsoleCommands;
use AppModelsUser;
use IlluminateConsoleCommand;
class ShowUsersCommand extends Command
{
protected $signature = 'users:show {--limit=5}';
protected $description = 'Show users with limit';
public function handle()
{
$limit = $this->option('limit');
$users = User::limit($limit)->get();
foreach ($users as $user) {
echo $user->name . "\n";
}
}
}
?>
Результат вызова команды:
"php artisan users:show --limit=3"
"John Doe"
"Jane Smith"
"Bob Johnson"
Пример
Давайте создадим команду, которая принимает флаговую опцию '--force' без значения:
<?php
namespace AppConsoleCommands;
use AppModelsUser;
use IlluminateConsoleCommand;
class DeleteUsersCommand extends Command
{
protected $signature = 'users:delete {--force}';
protected $description = 'Delete users with confirmation';
public function handle()
{
$force = $this->option('force');
if ($force) {
User::truncate();
echo "All users deleted\n";
} else {
echo "Use --force to confirm deletion\n";
}
}
}
?>
Результат вызова команды:
"php artisan users:delete"
"Use --force to confirm deletion"
"php artisan users:delete --force"
"All users deleted"
Пример
Давайте создадим команду, которая принимает опцию с несколькими значениями через запятую:
<?php
namespace AppConsoleCommands;
use AppModelsUser;
use IlluminateConsoleCommand;
class FilterUsersCommand extends Command
{
protected $signature = 'users:filter {--roles=*}';
protected $description = 'Filter users by roles';
public function handle()
{
$roles = $this->option('roles');
if (empty($roles)) {
echo "No roles specified\n";
return;
}
$users = User::whereIn('role', $roles)->get();
foreach ($users as $user) {
echo $user->name . " - " . $user->role . "\n";
}
}
}
?>
Результат вызова команды:
"php artisan users:filter --roles=admin,editor"
"John Doe - admin"
"Jane Smith - editor"
Смотрите также
-
метод
argument,
который получает значение аргумента команды -
метод
signature,
который определяет сигнатуру команды -
метод
make:command,
который создаёт новый класс команды -
метод
ask,
который запрашивает ввод от пользователя в консоли