CLI фреймворки для PHP: полный обзор и сравнение лучших инструментов

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое CLI фреймворк для PHP и зачем он нужен?

CLI (Command Line Interface) фреймворк для PHP — это инструмент, который упрощает создание консольных приложений и скриптов. Вместо ручного парсинга аргументов $argv и обработки ввода/вывода, вы получаете готовую архитектуру с поддержкой команд, опций, цветного вывода, прогресс-баров и даже интерактивных меню.

В современной PHP-разработке CLI фреймворки используются повсеместно:

  • Автоматизация задач (миграции БД, кэширование, деплой)
  • Генерация кода (scaffolding)
  • CRON-скрипты и фоновые обработчики
  • Инструменты DevOps и CI/CD

Давайте рассмотрим пять самых популярных решений, которые вы можете использовать на pythonlib.ru.

1. Symfony Console — стандарт индустрии

Symfony Console — самый зрелый и популярный CLI фреймворк для PHP. Он используется в Laravel Artisan, Doctrine, Composer и сотнях других проектов.

Установка

composer require symfony/console

Пример: простое приложение "Hello World"

// hello.php
require __DIR__ . '/vendor/autoload.php';

use Symfony\Component\Console\Application;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class HelloCommand extends Command
{
    protected static $defaultName = 'app:hello';

    protected function configure(): void
    {
        $this->setDescription('Приветствие пользователя');
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $output->writeln('<info>Привет, мир!</info>');
        return Command::SUCCESS;
    }
}

$application = new Application();
$application->add(new HelloCommand());
$application->run();

Ключевые возможности

  • Автоматическая генерация справки (--help)
  • Поддержка опций и аргументов с валидацией
  • Цветной вывод через стили (info, error, comment)
  • Прогресс-бары, таблицы, вопросы
  • Тестирование команд через CommandTester

2. Laravel Zero — микро-фреймворк на основе Laravel

Laravel Zero — это облегченная версия Laravel, оптимизированная для CLI. Идеально подходит, если вы привыкли к экосистеме Laravel, но не хотите тащить весь фреймворк.

Установка

composer create-project laravel-zero/laravel-zero my-cli-app

Пример: команда с аргументами

// app/Commands/GreetCommand.php
namespace App\Commands;

use LaravelZero\Framework\Commands\Command;

class GreetCommand extends Command
{
    protected $signature = 'greet {name : Имя пользователя} {--yell : Кричать?}';
    protected $description = 'Приветствие с именем';

    public function handle(): int
    {
        $name = $this->argument('name');
        $message = "Привет, $name!";
        
        if ($this->option('yell')) {
            $message = strtoupper($message);
        }
        
        $this->info($message);
        return self::SUCCESS;
    }
}

Что внутри?

  • Eloquent ORM (опционально)
  • Artisan-style команды
  • Поддержка очередей и задач
  • Миграции и сидинг для БД
  • Встроенная компиляция в PHAR-архив

3. Minicli — минималистичный и быстрый

Minicli — это легковесный CLI фреймворк без зависимостей. Весит менее 100 КБ и идеально подходит для микросервисов и простых утилит.

Установка

composer require minicli/minicli

Пример: интерактивный опрос

// app.php
require __DIR__ . '/vendor/autoload.php';

use Minicli\App;

$app = new App();

$app->registerCommand('ask', function () use ($app) {
    $name = $app->getInput()->read('Ваше имя: ');
    $app->getPrinter()->info("Приятно познакомиться, $name!");
});

$app->run();

Особенности

  • Нет внешних зависимостей (кроме PHP 7.4+)
  • Поддержка вложенных команд

Рекомендаций