Web framework developer FAQ
This page is for developers with a quick question. Each answer links to the page with the details.
Contents
- Is Exponential a framework or a CMS?
- Where is the service container?
- Is there a router with named routes?
- Is there an ORM?
- How do migrations work?
- Can I use Twig or Blade?
- Can I use Composer libraries?
- Does it follow PSR-7 and PSR-15?
- Is there middleware?
- Is there an equivalent of Octane or RoadRunner?
- Is there GraphQL?
- How do I test?
- How do I run background jobs?
- Which databases?
- Where do I start?
Is Exponential a framework or a CMS?
Both. Its README calls it "a professional PHP application framework with advanced CMS (content management system) functionality" (Exponential for web framework developers).
Where is the service container?
There is none in the Exponential 6 kernel. Classes are found through generated class maps, configurable implementations through handler settings (Dependency injection and services).
Is there a router with named routes?
No. Addresses follow /<module>/<view>/<parameters>, declared in module.php; content gets URL aliases automatically
(Routing, Pretty URLs).
Is there an ORM?
eZPersistentObject maps your own tables to classes; content uses the content API with versions and translations
(ORM, The content model).
How do migrations work?
Tables are described in database-neutral .dba files; you ship an install command and upgrade steps. There is no
migration runner (Migrations).
Can I use Twig or Blade?
Not in Exponential 6 alone. Twig is available when Exponential 6 runs inside Symfony through the legacy bridge (The view layer).
Can I use Composer libraries?
Yes. autoload.php loads Composer's autoloader, and extensions are Composer packages
(Packages).
Does it follow PSR-7 and PSR-15?
The kernel predates them: requests are read through eZHTTPTool, responses are result arrays or direct output
(Coming from Slim, CodeIgniter, Yii, CakePHP or Laminas).
Is there middleware?
Request rules, request/input listeners and response/output filters cover most middleware uses
(Middleware).
Is there an equivalent of Octane or RoadRunner?
Yes: Exponential Velocity runs the installation in persistent workers and is part of Exponential as of 6.0.15; FrankenPHP is the alternative (Servers and deployment).
Is there GraphQL?
Not in Exponential 6; its APIs are REST, ezjscore and expservices. The Symfony-based platform products ship GraphQL (REST and JSON APIs, The platform products).
How do I test?
PHPUnit; most tests without a database, integration tests against a throwaway database (Testing).
How do I run background jobs?
With the expqueue job queue, cronjob parts and content jobs (Queues).
Which databases?
SQLite (the default), PostgreSQL, MongoDB, MariaDB, Oracle and MySQL (Database support).
Where do I start?
At Web framework developers: start here, then the reading path.
Related pages
- Concept dictionary
- Glossary for web framework developers
- Application creator FAQ
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.