PSR-15 middleware pipeline
A clean, composable request pipeline — routing, security, validation, CSRF, and dispatch each live in their own middleware.
PSR-15 middleware pipeline
A clean, composable request pipeline — routing, security, validation, CSRF, and dispatch each live in their own middleware.
Fine-grained control
Quiote puts choice and freedom over limiting conventions. Most implementation decisions stay yours.
Modern PHP 8.5+
Typed properties, enums, readonly, attributes, and first-class callable syntax throughout.
Flexible configuration
PHP arrays, YAML, or XML — mixed and matched per file, with full inheritance across formats.
A request flows through, in order: URL, route, action, view, template, response. A route maps a path to a module and action:
$routes->add('index', new Route('/', ['_module' => 'Default', '_action' => 'Index']));The action decides what happens and returns the name of a view — never HTML. One class handles every verb: Quiote maps GET to executeRead, POST to executeWrite, PUT/PATCH to executeUpdate, DELETE to executeRemove.
class IndexAction extends Action{ public function executeRead(WebRequest $rd) { $this->setAttribute('title', 'Home'); return 'Success'; // render the "Success" view for this action }}That naming convention is the thread that ties everything together — the Index action returning 'Success' resolves to the IndexSuccessView class and the IndexSuccess template. Build the whole thing, end to end.
The latest stable version is v4.0.0. Install it from Packagist with Composer:
composer require quioteframework/quioteThen scaffold a fresh application:
vendor/bin/quiote new my-appSee Installation for requirements and the command-line tool for everything quiote can do.
Built for AI agents
Quiote ships a first-class MCP server — written in Quiote itself — that gives Claude Code, Cursor, or any MCP client authoritative, up-to-date knowledge of the framework: the docs, full-text search, and convention cards. Set up the AI assistant.