Во фреймворке HLEB2 есть как встроенные консольные команды, так и возможность создания их разработчиком, использующим фреймворк.
Консольные команды запускаются из терминала или планировщика задач, входная точка для них — файл 'console' в корне проекта, представляющий собой обычный PHP-файл.
Список команд фреймворка можно получить консольной командой:
$php console --help
--version or -v (отображает текущую версию фреймворка) --info or -i [name] (показ актуальных настроек из common) --help or -h (выводит список команд по умолчанию) --ping (проверка сервиса, возвращает предопределённое значение) --logs or -lg (вывод последних строчек из файлов с логами) --list or -l (отображает список добавленных команд) --routes or -r (отформатированный список маршрутов) --find-route (or -fr) <url> [method] [domain] (поиск маршрута по URL) --route-info (or -ri) <url> [method] [domain] (информация о маршруте по URL) --clear-routes-cache or -cr (удаляет кеш маршрутов) --update-routes-cache or --routes-upd or -u (обновляет кеш маршрутов) --clear-cache or -cc (очистка кеша для фреймворка) --add <task|controller|middleware|model> <name> [desc] (создание класса) --create module <name> (создание файлов модуля) --clear-cache--twig or -cc-twig (очистка кеша для шаблонизатора Twig) <command> --help (запрос справки о команде)
Пример добавления собственной консольной команды при помощи создания соответствующего класса в папке /app/Commands/Demo/:
Или через встроенную консольную команду:
$php console --add task demo/example-task "task description"
Будет создан файл /app/Commands/Demo/ExampleTask.php. При необходимости можно изменить исходный шаблон для генерации задач.
Во фреймворке название команды складывается из названия (относительного пути) класса, находящегося в папке /app/Commands/. Поэтому рекомендуется изначально давать командам значимые названия, отображающие суть их действия.
Теперь можно запустить новую команду из консоли, также она станет видна в общем списке команд.
Но так как в ней пока нет выводимого результата, добавим параметр --help, чтобы получить информацию о команде.
$php console demo/example-task --help
Изменим созданный класс команды так, чтобы метод run() принимал аргументы.
Возвращаемое значение self::SUCCESS_CODE в классе команды показывает, что команда выполнилась успешно. Если команды в консоли или планировщике задач должны выполнится подряд через &&, то выполнение прервется при возврате self::ERROR_CODE. Это может быть полезно и в других комплексных случаях, таких как CI/CD.
После этого выполним команду с двумя аргументами, чтобы получить вывод 'speed and quality':
$php console demo/example-task speed quality
Для специальных случаев фреймворк позволяет создавать именованные параметры команд.
Созданную команду можно выполнить из кода приложения или из другой консольной команды.
Но только в этом случае результат работы команды не будет выведен, так как предназначение её теперь иное.
Чтобы получить результат работы команды, необходимо использовать внутри класса метод $this->setResult() для установки данных, а затем получить извне эти данные через метод getResult().
Для вывода всего или части текста в одном из базовых цветов в терминале нужно использовать специально предназначенный метод color() в команде.
Например:
Тип созданных команд и предназначение можно контролировать атрибутами PHP.
Аттрибут #[Purpose] предназначен для задания области видимости команд.
У этого атрибута существует один аргумент status, в котором можно указать варианты:
Purpose::FULL - без ограничений, значение по умолчанию.
Purpose::CONSOLE - можно использовать только как консольную команду.
Purpose::EXTERNAL - использование только в коде, отсутствует в списке команд.
Аттрибут #[Disabled] у класса команды делает её неактивной.
Аттрибут #[Hidden] у класса команды скрывает её из списка консольных команд.
← Шаблонизатор TWIG Контейнер →