The runtime-first
PHP micro-framework
Write your app once. Run it under php-fpm, RoadRunner, Swoole, or FrankenPHP — zero code changes between runtimes. Explicit by design — code an LLM gets right.
->serve()
->start()
->serve()
PHP stays alive between requests — no bootstrap cost per hit · How it works →
Eight lines, a working JSON API
No config files, no service providers, no boilerplate. Closures, classes, or invokables — Lift's router accepts them all and auto-converts return values to the right response type.
- ▸ O(1) static-route lookup, compiled regex for dynamic ones.
- ▸ Type-safe dependency injection into handlers and constructors.
- ▸ Returns array → JSON, string → HTML, null → 204. Automatically.
<?php require 'vendor/autoload.php'; use Lift\App; use Lift\Http\Response; $app = new App(); $app->get('/', fn() => Response::json(['ok' => true])); $app->run();
Batteries included, kept light
Router
Static O(1) + regex fallback. Named routes, groups, regex constraints, attribute routing.
DI Container
PSR-11 container with full autowiring via reflection cache. Singletons, bindings, factories.
Middleware
PSR-15 pipeline. Global, per-group, per-route. Built-in CORS, rate-limit, CSRF.
JWT + Crypto
HS256/RS256 JWT, AES-256-GCM, HMAC, ULID/UUIDv4/v7 — no extra deps.
Queues
Sync, Redis, AMQP drivers behind one interface. Worker with graceful shutdown.
Database
Tiny query builder, migrations, and Active-Record style model on top of PDO.
JSON-RPC 2.0
First-class JSON-RPC server bound to a route in one line.
Validation
Fluent rules, nested data, custom validators. Validation exceptions auto-return 422.
Testing
App::handle($req) returns a Response — no globals touched. Trivial to unit test.
Runtimes
RoadRunner, Swoole, and FrankenPHP worker adapters — keep PHP alive between requests, zero app changes.
Code an LLM gets right the first time
More backend code is written with an AI pair every month. The same things that make Lift readable for humans — explicit wiring, a small surface, PSR standards — are exactly what make a model generate Lift code that compiles and runs, instead of hallucinating a facade that doesn't exist.
Explicit, no magic
No facades, no global helpers, no runtime macros. Every dependency is a constructor argument the model can see, name, and type-hint.
Small API surface
One App object and standard PSR interfaces. The whole framework fits in a model's context — far fewer invented methods.
Standards, not lore
PSR-7 / PSR-11 / PSR-15 are widely documented. The model reuses standard knowledge instead of guessing framework-specific conventions.
Verifiable output
$app->handle($request) returns a Response — no globals. Generated code ships with a test you can run to confirm it actually works.
Ecosystem
Ships in the box
Bring your own
Lift is a micro-framework — it doesn't bundle an ORM, mailer, or auth scaffolding. Plug in best-in-class packages or write exactly what you need.
Measurably faster than the alternatives
Same handler, same PHP, same host. Lift outperforms Slim 4 by ~97 % while being fully PSR-7/PSR-11/PSR-15 compliant — and sits within 9 % of Flight, which ships no PSR-7 at all.
Open full report →Frequently Asked Questions
What is Lift PHP?
Lift is a blazing fast PHP micro-framework with PSR-7, PSR-11, and PSR-15 support. It features zero-config routing, autowiring DI container, middleware, and built-in tools for JWT, queues, and database operations.
How does Lift compare to Laravel or Symfony?
Lift is a micro-framework focused on speed and simplicity. Unlike Laravel or Symfony, it has zero non-PSR runtime dependencies and is designed for building REST APIs and microservices quickly without the overhead of full-stack frameworks.
Is Lift suitable for production?
Yes. Lift includes production-ready features like middleware (CORS, rate limiting, CSRF), JWT authentication, queue workers, database migrations, and comprehensive error handling. It's built with performance and security in mind.
What PHP version does Lift require?
Lift requires PHP 8.1 or higher. It's optimized for PHP 8.3+ with OPcache and JIT enabled for maximum performance.
How fast is Lift compared to other frameworks?
Benchmarks show Lift reaching roughly 38% of raw-PHP throughput on static routes — about double the requests/sec of Slim 4 (also fully PSR-7 compliant), and within ~9% of Flight, which ships no PSR-7 at all. O(1) static-route lookup and a reflection cache drive this.
Is Lift good for AI-assisted development?
Yes. Lift avoids facades, global helpers, and runtime magic — its API is explicit and small, so AI coding assistants generate Lift code that compiles and runs correctly more often. Standard PSR-7, PSR-11, and PSR-15 interfaces let the model rely on well-documented contracts instead of framework-specific conventions, and App::handle($request) makes generated code easy to verify with a test.