Интерфейс командной строки и консоль Pimcore
Pimcore может быть запущен в headless-режиме и имеет очень мощный PHP API. Как следствие этих двух аспектов, в Pimcore можно автоматизировать практически все задачи.
Pimcore реализует компонент Symfony\Console и предоставляет bin/console в качестве единой
точки входа для консольных команд, зарегистрированных в приложении Symfony\Console.
Реализация собственных команд
Взгляните на Symfony\Console документацию
для получения подробной информации о том, как реализуются команды. Тем не менее, имеет смысл позволить вашим классам команд расширять Pimcore\Console\AbstractCommand, чтобы получить некоторые настройки по умолчанию, например, вспомогательный компонент для автоматической настройки
Symfony VarDumper Component (см. ниже).
Регистрация команд
Команда должна быть зарегистрирована как сервис и помечена тегом console.command. Если вы используете services.yaml по умолчанию
из скелета Pimcore (или демонстрационных версий) для настройки, это уже сделано для вас для App, благодаря автоматической настройке.
Хелперы, предоставляемые Pimcore\Console\AbstractCommand
Базовый класс AbstractCommand предоставляет хелперы, которые облегчают вашу жизнь.
--ignore-maintenance-mode
Консольное приложение неявно добавляет параметр --ignore-maintenance-mode ко всем командам.
Pimcore проверяет наличие этого параметра и предотвращает запуск команды, если система находится в
режиме обслуживания, а параметр не установлен.
--maintenance-mode
Консольное приложение неявно добавляет параметр --maintenance-mode ко всем командам.
При установке этого параметра Pimcore переводится в режим обслуживания на время выполнения этой команды.
dump() и dumpVerbose()
усовершенствованный var_dump через VarDumper.
Пример
<?php
namespace App\Command;
use Pimcore\Console\AbstractCommand;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(
name: 'awesome:command',
description: 'Awesome command'
)]
class AwesomeCommand extends AbstractCommand
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
// дамп
$this->dump("Isn't that awesome?");
// добавление новых строк с помощью флагов
$this->dump("Dump #2");
// выводить только в подробном режиме
$this->dumpVerbose("Dump verbose");
// Выводится в виде белого текста на красном фоне.
$this->writeError('oh noes!');
// Выводится в виде зеленого текста.
$this->writeInfo('info');
// Выводится в виде синего текста.
$this->writeComment('comment');
// Выводится в виде желтого текста.
$this->writeQuestion('question');
}
}
Использование
Вызовите скрипт bin/console list из командной строки, чтобы получить список доступных команд. Чтобы вызвать
команду, используйте bin/console <подкоманда>.
Обязательно запустите консоль с пользователем PHP, чтобы избежать проблем с правами на запись позже, переключившись на соответствующего пользователя, например, в системе Debian
su -l www-data -s /bin/bash.
Примеры:
# получить список всех зарегистрированных команд
$ ./bin/console list
# вызвать команду foo:bar
$ ./bin/console foo:bar
Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.