Lift v1.4.1

Сравнение фреймворков

Прямые конкуренты

Lift нацелен на ту же нишу, что Flight PHP, Slim 4 и Lumen — лёгкие фреймворки для построения API и микросервисов без накладных расходов полностекового решения.


Матрица возможностей

Возможность Lift Flight Slim 4 Lumen Silex¹ Mezzio
Версия PHP 8.1+ 7.0+ 7.4+ 8.1+ 7.0+ 8.1+
HTTP по PSR-7 ✓ ✗² ✓ ✓ ✓ ✓
Контейнер PSR-11 ✓ ✗ ✓ ✓ ✓ ✓
Middleware PSR-15 ✓ ✗ ✓ ✗ ✗ ✓
DI с автосвязыванием ✓ ✗ ✗³ ✓ ✗ ✗
Маршрутизация через атрибуты PHP ✓ ✗ ✗ ✗ ✗ ✓⁴
Поиск статических маршрутов за O(1) ✓ ✗ ✓⁵ ✗ ✗ ✓⁵
Именованные маршруты + генерация URL ✓ ✓ ✓ ✓ ✓ ✓
Группы маршрутов ✓ ✓ ✓ ✓ ✓ ✓
Встроенный JWT ✓ ✗ ✗ ✗ ✗ ✗
Шифрование AES-256-GCM ✓ ✗ ✗ ✗ ✗ ✗
Хеширование паролей (Argon2id) ✓ ✗ ✗ ✗ ✗ ✗
Подпись HMAC ✓ ✗ ✗ ✗ ✗ ✗
UUID v4/v7 + ULID ✓ ✗ ✗ ✗ ✗ ✗
Система очередей ✓ ✗ ✗ ✓ ✗ ✗
Redis-клиент ✓ ✗ ✗ ✓ ✗ ✗
JSON-RPC 2.0 ✓ ✗ ✗ ✗ ✗ ✗
CORS-middleware ✓ ✗ ✓⁶ ✓⁶ ✗ ✓⁶
Middleware ограничения частоты ✓ ✗ ✗ ✗ ✗ ✗
Защита CSRF ✓ ✗ ✗ ✓⁷ ✗ ✗
Middleware заголовков безопасности ✓ ✗ ✗ ✗ ✗ ✗
Ноль рантайм-зависимостей вне PSR ✓ ✓ ✗ ✗ ✗ ✗

¹ Silex прекращён (2019). Указан только для исторического контекста.
² Flight использует собственные HTTP-объекты, не PSR-7.
³ Slim 4 поставляет SlimContainerResolver, но не автосвязывает; требует явных привязок.
⁴ Mezzio поддерживает атрибуты через пакет mezzio/mezzio-attributerouter.
⁵ Через FastRoute (отдельная зависимость nikic/fast-route).
⁶ Через tuupola/cors-middleware или похожий пакет (отдельная зависимость).
⁷ Через session-помощники Laravel (только Lumen).


Производительность

Актуальные числа со страницы /benchmarks при одинаковых условиях прогона.

Снимок HTTP-пропускной способности (зап./с)

Фреймворк GET /ping GET /json GET /users/{id}
raw-php 9 009 9 030 8 947
flight 3 923 3 833 3 679
lift 3 437 3 552 3 375
slim 1 727 1 759 1 767

Условия теста

  • PHP 8.3.6 с OPcache + tracing JIT (64M буфер JIT)
  • php -S (single-process), один и тот же хост и одинаковый профиль прогона для всех фреймворков
  • wrk -t4 -c64 -d30s --latency
  • ~100 000+ запросов на каждый эндпоинт для каждого фреймворка

См. ../benchmarks для percentiles задержки, относительных графиков и полной методологии.


Почему не Slim 4?

Slim 4 превосходен, но требует nikic/fast-route для конкурентоспособной производительности маршрутизации и php-di/php-di (или похожий) для автосвязывания — добавляя зависимости. Lift поставляет оба «из коробки» без лишних пакетов и добавляет JWT, шифрование, UUID, очереди и JSON-RPC, которые Slim оставляет сторонним библиотекам.

Почему не Lumen?

Lumen использует полный IoC-контейнер Laravel и загрузку через сервис-провайдеры, что добавляет ~5–10 мс накладных расходов на холодный старт. Если вы уже на Laravel, Lumen — естественный выбор. Если вы начинаете с нуля или оптимизируете под микросервисы, Lift стартует менее чем за 1 мс.

Почему не Flight?

Flight быстр и действительно без зависимостей, но он предшествует стандартам PSR и не может использовать современную экосистему middleware PSR-7/15. Lift даёт вам тот же минимальный след с полным соответствием PSR, современными идиомами PHP 8.1+ и полным набором инструментов для шифрования/безопасности.


Запуск собственного бенчмарка

# Установить wrk
brew install wrk   # macOS
sudo apt install wrk  # Ubuntu

# Запустить приложение Lift
php -S localhost:8080 benchmarks/apps/lift_app.php

# Статический маршрут
wrk -t4 -c100 -d10s http://localhost:8080/ping

# Динамический маршрут
wrk -t4 -c100 -d10s http://localhost:8080/users/42

См. ../benchmarks для полного руководства.