Code at the speed of thought.
Phlo transpiles to pure PHP and combines compact syntax with full-stack performance.
Why Phlo?
No detours.
Phlo runs directly on PHP. No interpreters, no bundlers, no hidden layer, just compact code that executes.
Backend and frontend, one file.
Routes can work synchronously and asynchronously without separate code paths. Phlo's frontend engine communicates incrementally with the backend, allowing you to easily build responsive and interactive applications.
No semicolons. No excuses.
One language for routes, views, styling, and frontend logic. No semicolons, no unnecessary folders, no external toolchains - just clean code that reads effortlessly.
Where Phlo stands out
Honest comparison with other PHP stacks What do we gain and where do we concede?
| Phlo | Laravel | Livewire | HTMX | |
|---|---|---|---|---|
| Compiler model | Compile-to-PHP | Interpreted | Interpreted | Backend-agnostic |
| One language full-stack | Yes, routes, views, CSS, JS in one file | Blade + loose JS | Blade + Livewire attributes | HTML + backend of your choice |
| Async UI updates | apply()-protocol from the same route | Self build (Inertia, own JS) | Server roundtrip per action | HTML fragments over the wire |
| Realtime | phloWS contract, built-in | Echo + Pusher / Redis | Echo via Laravel | SSE-extension |
| Ecosystem & community | Small, in growth | Enorm, decades old | Big within Laravel | Large, framework-free |
Simplicity in action
See how Phlo elegantly solves complex tasks.
route both GET demo json => view(%app->shell('Files/JSON', $this->content), 'JSON file demo')
prop store => %JSON('demo.library', assoc: true)
prop data => ['library' => 'Files/JSON', 'updated' => date('c'), 'items' => ['read', 'write', 'persist']]
method controller {
$this->store->objWrite($this->data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES)
$this->store->objRead(true)
}
view content:
{{ %app->intro('Files/JSON', 'Leest en schrijft JSON als objectdata. De demo schrijft data/demo.library.json en leest hetzelfde bestand direct terug.', 'JSON(demo.library, assoc: true)') }}
<article class="panel">
<h2>Files/JSON</h2>
<p>De JSON resource schrijft en leest data/demo.library.json.</p>
</article>
{{ %app->code($this->store->objData) }}
Start in two minutes
With Docker you have a running app without installing anything: the installer asks for name, host and resources, resolves requirements and only finishes after a clean build.
With Docker (fastest)
Or from the source code
Prefer manual or more detail? The guide describes each step. Read the guide