Константа SUCCESS
Константа SUCCESS принадлежит классу Command и хранит целочисленный код возврата 0. Она применяется в методе execute, чтобы сообщить Symfony об успешном выполнении консольной команды. Возвращая self::SUCCESS, команда завершает работу со статусом успеха. Это значение соответствует стандартному соглашению о кодах выхода процессов: 0 означает успех, любое другое число - ошибку или особую ситуацию.
Синтаксис
Command::SUCCESS
Внутри класса команды константа обычно указывается через self::SUCCESS или static::SUCCESS.
Пример
Давайте создадим команду, которая выводит сообщение и возвращает успешный код завершения:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:hello')]
class HelloCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return self::SUCCESS;
}
}
?>
Запустим команду в терминале:
php bin/console app:hello
Результат выполнения кода:
hello
Пример
Давайте проверим код возврата команды через терминал:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:hello')]
class HelloCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('hello');
return self::SUCCESS;
}
}
?>
Выполним команду и выведем код возврата:
php bin/console app:hello
echo $?
Результат выполнения кода:
hello
0
Как видно, команда завершилась с кодом 0, что соответствует значению константы SUCCESS.
Пример
Давайте сравним константу SUCCESS с другими кодами возврата:
<?php
namespace App\Command;
use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
#[AsCommand(name: 'app:status')]
class StatusCommand extends Command
{
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('SUCCESS: ' . self::SUCCESS);
$output->writeln('FAILURE: ' . self::FAILURE);
$output->writeln('INVALID: ' . self::INVALID);
return self::SUCCESS;
}
}
?>
Запустим команду:
php bin/console app:status
Результат выполнения кода:
SUCCESS: 0
FAILURE: 1
INVALID: 2