Шаблон налаштування підпису власної команди Laravel, згенерований AI
Це не стаття про додавання параметрів до ваших команд Laravel. Це вже охоплено в документації та багатьох статтях. Але є ще один випадок використання, коли ви можете захотіти дозволити вашим користувачам налаштовувати сам підпис ваших команд.
Припустимо, ви розробляєте пакет інструментів для Laravel. (Я придумав це, коли саме займався цим.) Можливо, ви захочете створити команду, яка виглядатиме так:
class ListModelsCommand extends Command
{
protected $signature = 'tools:list-models {-all}';
protected $description = 'Перелік усіх моделей у проєкті';
public function handle(): void
{
// Виконати щось цікаве
}
}
Але ваш користувач може мати свою власну команду в просторі "tools", або він уже міг встановити пакет, який використовує точно такий самий підпис, як той, що ви створюєте. Що робити?
Відповідь надзвичайно проста. $signature може бути динамічним. Просто налаштуйте файл конфігурації і дайте користувачу можливість вказати підпис без параметрів. Наприклад:
[
'list_models' => 'tools:list-models',
],
];
Тепер змініть вашу команду, додавши конструктор, який читає конфігурацію та оновлює підпис:
class ListModelsCommand extends Command
{
protected $signature;
protected $description = 'Перелік усіх моделей у проєкті';
public function __construct()
{
$this->signature = config('my_package_tools.command_signatures.list_models',
'tools:list-models') .
' {-all}';
parent::__construct();
}
public function handle(): void
{
// Виконати щось цікаве
}
}
Тепер підпис призначається динамічно відповідно до конфігурації, з використанням значення за замовчуванням, яке було раніше. Ми додаємо рядок параметра до рядка, який отримуємо з конфігураційного файлу.
Зверніть увагу, що parent::__construct() викликається після того, як ми призначили підпис. Якщо ви викличете його до цього, призначення буде проігноровано.
Для додаткової кастомізації ви навіть можете дозволити користувачеві вказати, що команда не повинна завантажуватися в конфігурації. Просто оновіть ваш провайдер послуг, щоб реєструвати команду тільки в разі, якщо конфігурація це дозволяє.
Якщо це було корисно, не соромтесь поставити лайк!
Шаблон налаштування підпису власної команди Laravel, згенерований AI
Це не стаття про додавання параметрів до ваших команд Laravel. Це вже охоплено в документації та багатьох статтях. Але є ще один випадок використання, коли ви можете захотіти дозволити вашим користувачам налаштовувати сам підпис ваших команд.
Припустимо, ви розробляєте пакет інструментів для Laravel. (Я придумав це, коли саме займався цим.) Можливо, ви захочете створити команду, яка виглядатиме так:
class ListModelsCommand extends Command
{
protected $signature = 'tools:list-models {-all}';
protected $description = 'Перелік усіх моделей у проєкті';
public function handle(): void
{
// Виконати щось цікаве
}
}
Але ваш користувач може мати свою власну команду в просторі "tools", або він уже міг встановити пакет, який використовує точно такий самий підпис, як той, що ви створюєте. Що робити?
Відповідь надзвичайно проста. $signature може бути динамічним. Просто налаштуйте файл конфігурації і дайте користувачу можливість вказати підпис без параметрів. Наприклад:
[
'list_models' => 'tools:list-models',
],
];
Тепер змініть вашу команду, додавши конструктор, який читає конфігурацію та оновлює підпис:
class ListModelsCommand extends Command
{
protected $signature;
protected $description = 'Перелік усіх моделей у проєкті';
public function __construct()
{
$this->signature = config('my_package_tools.command_signatures.list_models',
'tools:list-models') .
' {-all}';
parent::__construct();
}
public function handle(): void
{
// Виконати щось цікаве
}
}
Тепер підпис призначається динамічно відповідно до конфігурації, з використанням значення за замовчуванням, яке було раніше. Ми додаємо рядок параметра до рядка, який отримуємо з конфігураційного файлу.
Зверніть увагу, що parent::__construct() викликається після того, як ми призначили підпис. Якщо ви викличете його до цього, призначення буде проігноровано.
Для додаткової кастомізації ви навіть можете дозволити користувачеві вказати, що команда не повинна завантажуватися в конфігурації. Просто оновіть ваш провайдер послуг, щоб реєструвати команду тільки в разі, якщо конфігурація це дозволяє.
Якщо це було корисно, не соромтесь поставити лайк!
Перекладено з: Customize the Signature of Your Laravel Command