Возможности
У 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.