Консоль Imhotep

Консоль Imhotep – это ваш командный центр для управления приложением. Генерация кода, миграции базы данных, очистка кэша, запуск очередей – всё это можно делать через терминал, не открывая браузер.

Imhotep предоставляет удобный интерфейс командной строки, который включает множество полезных команд. Консоль спроектирована так, чтобы быть интуитивно понятной. Если вы знакомы с консольными командами в других фреймворках – большинство концепций вам уже знакомы. А если нет – начните с простого, создайте свою первую команду и попробуйте разные способы вывода. Практика – лучший учитель!

Запуск команд

Способ запуска зависит от вашего окружения.

Локальная установка

# Список всех доступных команд
php imhotep list

# Справка по конкретной команде
php imhotep help migrate

# Выполнить команду
php imhotep migrate --force
SHELL

Docker-окружение

Если вы используете Imhotep в Docker-контейнере, команды вызываются через docker compose. Важно: имя сервиса (app, php, web) зависит от вашего docker-compose.yml.

# Через docker compose
docker compose exec app php imhotep list

# Или через встроенную обертку
./vendor/bin/docker imhotep list
SHELL

Совет: Чтобы не писать длинную команду каждый раз, создайте алиас в ~/.bashrc:

alias imhotep='docker compose exec app php imhotep'
PHP

Программный запуск команд

Иногда нужно запустить одну команду из другой или даже из веб-приложения. Для этого используйте фасад Console:

use Imhotep\Facades\Console;

Route::get('/version', function () {
    // Способ 1 – полная строка
    $exitCode = Console::call('list --format=json');
    
    // Способ 2 – массив параметров
    $exitCode = Console::call('list', ['--format' => 'json']);
    
    // Получить результат выполнения
    $listJson = Console::output();
});
PHP

Изнутри другой команды используйте методы call или callSilent:

public function handle(): int
{
    // Вывод будет показан в консоли
    $this->call('list', ['--format' => 'json']);
    
    // Тихий вызов – вывод не показывается
    $this->callSilent('mail:send', [
        'user' => 1,
        '--queue' => 'default'
    ]);
}
PHP

События

Система консоли генерирует события, на которые вы можете подписаться:

Imhotep\Console\Events\ConsoleStarting – запускается перед запуском консольного приложения. Отличное место, чтобы зарегистрировать свои команды или выполнить подготовительные действия.

Imhotep\Console\Events\CommandStart – запускается перед выполнением конкретной команды. Можно использовать для логирования или проверки прав.

Imhotep\Console\Events\CommandFinish – запускается после выполнения команды, содержит код завершения. Удобно для сбора статистики или очистки ресурсов.

Следующие шаги

Теперь, когда вы знакомы с основами, углубитесь в конкретные темы: