Перейти к основному содержимому

Интерфейс командной строки и консоль 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


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.