Консоль Imhotep
Консоль Imhotep – это ваш командный центр для управления приложением. Генерация кода, миграции базы данных, очистка кэша, запуск очередей – всё это можно делать через терминал, не открывая браузер.
Imhotep предоставляет удобный интерфейс командной строки, который включает множество полезных команд. Консоль спроектирована так, чтобы быть интуитивно понятной. Если вы знакомы с консольными командами в других фреймворках – большинство концепций вам уже знакомы. А если нет – начните с простого, создайте свою первую команду и попробуйте разные способы вывода. Практика – лучший учитель!
Запуск команд
Способ запуска зависит от вашего окружения.
Локальная установка
# Список всех доступных команд
php imhotep list
# Справка по конкретной команде
php imhotep help migrate
# Выполнить команду
php imhotep migrate --force
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
Совет: Чтобы не писать длинную команду каждый раз, создайте алиас в
~/.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();
});
Изнутри другой команды используйте методы call или callSilent:
public function handle(): int
{
// Вывод будет показан в консоли
$this->call('list', ['--format' => 'json']);
// Тихий вызов – вывод не показывается
$this->callSilent('mail:send', [
'user' => 1,
'--queue' => 'default'
]);
}
События
Система консоли генерирует события, на которые вы можете подписаться:
Imhotep\Console\Events\ConsoleStarting – запускается перед запуском консольного приложения. Отличное место, чтобы зарегистрировать свои команды или выполнить подготовительные действия.
Imhotep\Console\Events\CommandStart – запускается перед выполнением конкретной команды. Можно использовать для логирования или проверки прав.
Imhotep\Console\Events\CommandFinish – запускается после выполнения команды, содержит код завершения. Удобно для сбора статистики или очистки ресурсов.
Следующие шаги
Теперь, когда вы знакомы с основами, углубитесь в конкретные темы:
- Создание команд – создавайте свои собственные команды
- Сигнатура команд – настраивайте аргументы и опции
- Ввод и вывод данных – получайте данные и выводите информацию