Lift v1.3.0

Можливості

Lift має чітку думку про те, що мікрофреймворк має постачати «з коробки»: маршрутизатор, контейнер, HTTP-шар і все необхідне, щоб побудувати справжній продакшен-сервіс, не підтягуючи сотню пакетів.

HTTP

PSR-7 Request / Response
Незмінні HTTP-об’єкти з плавними білдерами та помічниками для JSON.
Швидкий шлях статичних маршрутів
Статичні маршрути розв’язуються хеш-пошуком за O(1) до regex-зіставлення.
Іменовані маршрути
Зворотна генерація URL: $app->url("users.show", ["id" => 42]).
Групи маршрутів
Префікс + спільний middleware. Підтримується вкладеність.
Маршрутизація через атрибути
#[Get("/users/{id}")] на методах контролерів — завантажується через $app->loadControllers().
Авто-перетворення відповіді
array → JSON, string → HTML, null → 204, Response → як є.
Middleware PSR-15
Глобально, погрупово, помаршрутно. Компонований конвеєр.
Вбудований middleware
CORS, rate-limit, CSRF, панель налагодження, логування.
SSE-відповіді
Стримінг Server-Sent Events через SseResponse.
HTTP-клієнт
HTTP-клієнт із повторними спробами, обгортка над curl.

DI та контейнер

Контейнер PSR-11
Стандартний контракт; працює з будь-яким споживачем PSR-11.
Повне автозв’язування
Впровадження параметрів конструктора та методів за підказкою типу.
Кеш рефлексії
Пошуки рефлексії кешуються для продуктивності на гарячому шляху.
Синглтони / прив’язки
$app->bind / singleton / instance — усі три.
Розв’язання callable
$container->call($fn) впроваджує залежності у замикання.

Безпека та шифрування

JWT (HS256/RS256)
Кодування, декодування, перевірка, помічники для терміну дії та claims.
Шифрування AES-256-GCM
Автентифіковане шифрування «з коробки».
Підписувач HMAC-SHA256
Підпис + перевірка зі порівнянням за константний час.
Хешування паролів
Обгортка над password_hash із розумними значеннями за замовчуванням.
CSRF-middleware
Патерн double-submit cookie, під’єднується одразу.
CORS-middleware
Preflight обробляється навіть без збіглого маршруту.
Обмеження частоти
Token bucket зі сховищем Redis або в пам’яті.

Дані та ввід-вивід

Конструктор запитів
Плавні SELECT / INSERT / UPDATE / DELETE поверх PDO.
Міграції
Версіоновані міграції схеми через CLI.
Модель Active Record
Опційний шар моделей для простого зберігання.
Redis-клієнт
Обгортка над ext-redis за RedisClientInterface — можна підставити Predis або будь-який клієнт. Живить драйвери кешу та черг.
Абстракція файлової системи
Крихітний FS-API з локальним драйвером.
Валідація
Плавні правила з авто-422 при ValidationException.

Рантайми

RoadRunner-воркер
Персистентний PSR-7 воркер — PHP залишається в пам’яті між запитами. Автовизначає фабрику PSR-17 Nyholm / Guzzle / Laminas. Потребує spiral/roadrunner-http.
Swoole / OpenSwoole
Нативний корутинний HTTP-сервер Swoole. Перетворює запити Swoole → Lift Request/Response. Налаштовувані host, port, worker_num. Нуль змін коду застосунку.
FrankenPHP
Адаптер worker-режиму через frankenphp_handle_request(). Невеликий worker.php загортає ваш $app; одна перевірка рантайму дозволяє тому самому файлу відкотитися на php-fpm.
Request::fromPsr7()
Перетворює будь-який сторонній PSR-7 ServerRequestInterface на Lift Request, включно з усіма атрибутами. Корисно для власних мостів рантаймів.

DX та інструменти

CLI (bin/lift)
Генерація, міграції, запуск сервера, воркери черг.
Панель налагодження
Вбудований у сторінку інспектор запитів/SQL/таймінгів для розробки.
Логер PSR-3
Драйвери stdout, файл, ротація.
Диспетчер подій
Події PSR-14 для хуків життєвого циклу застосунку.
Шаблони
Звичайні PHP-шаблони + макети + секції — без кроку компіляції.
Локалізація
Перекладач із правилами множини.
JSON-RPC 2.0
Сервер, прив’язуваний до будь-якого маршруту — повна відповідність специфікації.
Помічники для тестів
Request/Response будуються без глобалей; ідеально для PHPUnit.