Console brick
Міграції, seed і разові задачі не повинні жити в HTTP-контролері:
немає request/response, а «запустити очистку» через endpoint —
зайва поверхня атаки. addConsole() на
ConceptStack реєструє Symfony
Console Application і список команд. Повертає
ConsoleBuilder. У треку рецептів з’являється на
кроці База даних
разом із migrate/seed.
Навіщо окремий brick, а не «автоматично з Database»: CLI без БД
(черги, cron, одноразові скрипти) теж потрібен Console; навпаки,
HTTP-only додаток може не тягнути CLI-команди міграцій. Команди
з extension-database реєструєте явно в
setCommands([...]) — Stack їх не підтягує «про запас».
Методи ConsoleBuilder:
| Метод | Параметри | Опис | Залежність |
|---|---|---|---|
setName() |
string $appName |
Ім’я Application у --help / banner |
— |
setVersion() |
string $appVersion |
Версія CLI-додатку | — |
setCommands() |
list<class-string<Command>> |
Класи команд, які потрапляють у Application | для db:* — Database |
setName()
$stack->addConsole()
->setName('Recipes');
Ім’я видно в bin/console.php list і help. Це
ідентифікатор CLI-процесу, не HTTP-host: зручно відрізняти
кілька проєктів на одній машині.
setVersion()
$stack->addConsole()
->setVersion('1.0.0');
Версія Application — для операторів і CI («який білд крутить migrate»), не для semver пакета Stack.
setCommands()
use Concept\Extensions\DatabaseEloquent\Console\DbMigrateCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbRollbackCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbMigrationListCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbSeedCommand;
use Concept\Extensions\DatabaseEloquent\Console\DbSeederListCommand;
$stack->addConsole()
->setName('Recipes')
->setVersion('1.0.0')
->setCommands([
DbMigrateCommand::class,
DbRollbackCommand::class,
DbMigrationListCommand::class,
DbSeedCommand::class,
DbSeederListCommand::class,
]);
Список — class-string команд Symfony Console. Шляхи міграцій і
класи seeders — на Database brick
(setMigrations / setSeeders); Console
лише викликає вже зареєстровані сервіси. Entry point —
bin/console.php (тонкий: bootstrap →
$app->run()).
Що реєструє brick
- Symfony Console
Applicationз name/version - Зареєстровані команди з
setCommands()(lazy / DI за convention пакета)
Рецепт — 6. База даних (блок Console). Каталог — Bricks і addX(). Extension — Console.