Сравнение фреймворков
Прямые конкуренты
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 для полного руководства.