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 для повного посібника.