Уровни детализации

Консоль имеет пять уровней детализации. Они определены в OutputInterface:

=========================================== ====================================== =================-==== Значение Смысл Опция консоли =========================================== ====================================== ====================== OutputInterface::VERBOSITY_QUIET Не выводить сообщения -q или --quiet OutputInterface::VERBOSITY_NORMAL Уровень детализации по умолчанию (нет) OutputInterface::VERBOSITY_VERBOSE Повышенная детализация сообщений -v OutputInterface::VERBOSITY_VERY_VERBOSE Информативные второстепенные сообщения -vv OutputInterface::VERBOSITY_DEBUG Сообщения отладки -vvv =========================================== ====================================== ======================

Существует возможность печтать сообщение в команде только для определённого уровня детализации. Например:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// ...
class CreateUserCommand extends Command
{
    // ...

    public function execute(InputInterface $input, OutputInterface $output)
    {
        $user = new User(...);

        $output->writeln(array(
            'Username: '.$input->getArgument('username'),
            'Password: '.$input->getArgument('password'),
        ));

        // класс пользователя печатается только, когда используется уровень детализации verbose
        if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
            $output->writeln('User class: '.get_class($user));
        }

        // как вариант, вы можете передать уровень детализации в writeln()
        $output->writeln(
            'Будет напечатан только в режиме verbose или выше',
            OutputInterface::VERBOSITY_VERBOSE
        );
    }
}

Также существует больше семантических методов, которые вы можете использовать для тестирования каждого из уровней детализации:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
if ($output->isQuiet()) {
    // ...
}

if ($output->isVerbose()) {
    // ...
}

if ($output->isVeryVerbose()) {
    // ...
}

if ($output->isDebug()) {
    // ...
}

Note

Эти семантические методы определяются в OutputInterface, начиная с Symfony 3.0. В предыдущих версиях Symfony они определяются в разных реализациях интерфейса (например, в Output), чтобы поддерживать обратную совместимость.

Когда используется тихий (quiet) уровень, то весь вывод сдерживается, так как метод по умолчанию write() возвращает не печатая.

Tip

MonologBridge предоставляет класс ConsoleHandler, который позволяет вам отображать сообщения в консоли. Это аккуратнее, чем оборачивать ваши вызовы вывода в условия. Для примера использования в фреймворке Symfony, смотрите How to Configure Monolog to Display Console Messages.

Tip

Если используется уровень VERBOSITY_VERBOSE или выше, печатается вся трасса исключений в стеке.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.