quioteframework / quiote
Quiote is a full-featured MVC-style framework for PHP 8.5+ with a strong focus on structure, code reusability and flexibility.
Requires
- php: >=8.5.0
- ext-dom: *
- ext-intl: *
- ext-pcre: *
- ext-reflection: *
- ext-spl: *
- lib-libxml: *
- middlewares/negotiation: ^2.2
- middlewares/payload: ^3.1
- nyholm/psr7: ^1.8
- nyholm/psr7-server: ^1.0
- psr/event-dispatcher: ^1.0
- psr/http-client: ^1.0
- psr/http-factory: ^1.1
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^3.0
- psr/simple-cache: ^3.0
- quioteframework/csrf: @dev
- relay/relay: ^3.0
- symfony/cache: ^8.0
- symfony/console: ^8.0
- symfony/mime: ^8.0
- symfony/routing: ^8.0
- symfony/service-contracts: ^3.6
- symfony/yaml: ^8.0
Requires (Dev)
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.0 || ^13.0
- quioteframework/db-cycle: @dev
- quioteframework/db-doctrine: @dev
- quioteframework/db-eloquent: @dev
- quioteframework/db-propulsion: @dev
- quioteframework/mcp: @dev
- quioteframework/phptal: @dev
- quioteframework/ratelimit: @dev
- quioteframework/session-azure: @dev
- quioteframework/session-gcs: @dev
- quioteframework/session-pdo: @dev
- quioteframework/session-s3: @dev
- quioteframework/telemetry-dashboard: @dev
- quioteframework/telemetry-otel: @dev
- quioteframework/twig: @dev
- quioteframework/whoops: @dev
- quioteframework/xslt: @dev
- rector/rector: ^2.3
- symfony/http-client: ^8.1
- testcontainers/testcontainers: ^1.0
Suggests
- ext-iconv: Enable iconv if you need to convert between other charset than iso-8859-1 and utf-8
- ext-pdo: PDO is required for database connectors that use PDO as base
- ext-session: If the session extension is disabled you'll have to build your own session storage system and hook it into quiote
- ext-tokenizer: Enable the tokenizer extension allows Quiote to generate more efficient config-caches
- ext-xdebug: Optional for coverage and debugging
- ext-xsl: Required only for transformation of pre 1.0 style configuration files
- phpunit/phpunit: Install phpunit if you want to run your tests
- quioteframework/db-cycle: Enables the 'cycle' database driver (Quiote\Database\Adapter\Cycle\CycleDatabase)
- quioteframework/db-doctrine: Enables the 'doctrine' and 'doctrine_dbal' database drivers (Quiote\Database\Adapter\Doctrine\*)
- quioteframework/db-eloquent: Enables the 'eloquent' database driver (Quiote\Database\Adapter\Eloquent\EloquentDatabase)
- quioteframework/db-propulsion: Enables the 'propulsion' database driver (Quiote\Database\Adapter\Propulsion)
- quioteframework/mcp: Enables the MCP server capability (Quiote\Mcp\McpPlugin, `mcp:serve`)
- quioteframework/phptal: Enables the PHPTAL (.tal) template renderer (Quiote\Renderer\Phptal\PhptalRenderer)
- quioteframework/ratelimit: Login throttle / rate limiting (Quiote\Security\RateLimit\LoginThrottle), built on symfony/rate-limiter
- quioteframework/session-azure: Azure Blob Storage session backend (Quiote\Storage\Azure\AzureBlobSessionPersistence)
- quioteframework/session-gcs: Google Cloud Storage session backend (Quiote\Storage\Gcs\GcsSessionPersistence)
- quioteframework/session-pdo: PDO-backed session storage (Quiote\Session\Pdo\PdoSessionPersistence for SessionManager, Quiote\Storage\Pdo\PdoSessionStorage for the legacy Storage subsystem)
- quioteframework/session-s3: AWS S3 session backend (Quiote\Storage\S3\S3SessionPersistence)
- quioteframework/telemetry-dashboard: Install to enable the `telemetry:dashboard` CLI command
- quioteframework/telemetry-otel: Install to enable the telemetry.* settings family / OTel SDK exporter (Quiote\Telemetry\TelemetryBootstrap)
- quioteframework/twig: Enables the Twig (.twig) template renderer (Quiote\Renderer\Twig\TwigRenderer)
- quioteframework/whoops: Full-detail developer exception renderer (Quiote\Exception\Rendering\Whoops\WhoopsRenderer), built on filp/whoops
- quioteframework/xslt: Enables the XSLT (.xsl) template renderer (Quiote\Renderer\Xslt\XsltRenderer)
This package is auto-updated.
Last update: 2026-07-06 07:51:16 UTC
README
- License: LGPL-2.1
- Latest Version: 1.0.0-pre-alpha1
- Build:
- Homepage: https://github.com/quioteframework/quiote/
History
Quiote is a fork/rewrite of Agavi, an MVC framework that started life around 2006 and was maintained until the mid 2010s. Agavi was a fork from an older MVC framework called Mojavi. Mojave desert -> Mojavi. The agave plant grows in the Mojave desert -> Agavi. Agavi being an excellent framework continued serving well for around a decade after active development stopped, but in 2025 the (probably) main company using Agavi decided it needed a refresh and started porting it to PHP 8.
A lot of things had changed during the 20 years since Agavi's inception. There were no middleware, no DI containers, no PSR-7/PSR-15. While the project started as a direct port to PHP 8.4, it became painfully obvious that a lot of things needed to change in the internals, and as work progressed the fork strayed further and further away from the original Agavi design.
- PSR-15 middleware pipeline replaces Agavi's global/action filter chain end to end (routing, content negotiation, CSRF, security, validation, dispatch, form population, and more each live in their own middleware).
- PSR-7 HTTP messages (via
nyholm/psr7) instead of Agavi's bespoke request/response objects. - A DI container (
Quiote\DI\Container) with constructor injection for actions, services, and views, replacingfactories.xml-driven instantiation. - PSR-3-compatible structured logging (
Quiote\Logging\*), with per-category log levels and pluggable sinks, replacing ad-hoc error logging. - CSRF protection built into the middleware stack (
symfony/security-csrf), covering both cookie-based PHP UIs and header-based API/SPA clients. - A config system that isn't XML-only anymore:
settings,factories,databasesand most other config types can be written as plain PHP arrays or YAML instead of XML, mixed and matched per file, with autodetection or an explicitcore.config_formatoverride, and fullparent/importsinheritance across formats. - A validator compiler: XML
validators.xmlfiles still work, but validators can now be declared directly in PHP via a fluent builder - Symfony components for routing, caching (including APCu-backed config caching for persistent workers like FrankenPHP), rate limiting, and YAML parsing, instead of Agavi's homegrown equivalents.
- A modern PHP 8.5 codebase: typed properties, enums, readonly properties, first-class callable syntax, and attributes throughout, in place of the PHP 5-era code Agavi started with.
Quiote is the flower that blooms from the agave plant at the end of it's life.
Purpose
Quiote is a powerful, scalable PHP 8.5 application framework that follows the MVC paradigm. It enables developers to write clean, maintainable and extensible code. Quiote puts choice and freedom over limiting conventions, and focuses on sustained quality rather than short-sighted decisions.
Quiote is designed for serious development. It is not a complete website construction kit but rather a skeleton over which you build your application. The architecture of Quiote allows developers to retain very fine control over their code.
Quiote strives to leave most implementational choices to the developers. Quiote's components are inherently extensible, and the framework itself is designed around a configuration system that provides a very flexible environment.
The framework works for almost all kinds of applications but excels most in large codebases, long-term projects, extreme cases of integration and other special situations.
Requirements and installation
- PHP 8.5+
- required extensions:
dom,intl,SPL,Reflection,PCRE(andlibxml, whichdomdepends on) - optional extensions:
xsl(only needed to transform pre-1.0 style configuration files),tokenizer(enables more efficient config caches),session,PDO(for PDO-based database connectors),iconv
No releases or packagist packages yet, as we are pre-alpha.
Alternatively, you can download a release archive from the github releases page and extract it or see the downloads page on the homepage.
Documentation
TBD
Contribution
Discussing issues in github issues as well as talking is always of good help to everyone. If you want to do more please contribute by forking and sending a pull request. More information can be found in the CONTRIBUTING.md file.
License
Quiote is licensed under the LGPL 2.1. See the Open Source Initiative and this FAQ entry for details. All relevant licenses and details can be found in the LICENSE file.