Web framework developers: start here #
This section of the help is for developers who know a web framework (Symfony, Laravel, Slim, CodeIgniter, Yii,
CakePHP, Laminas, Django, Rails, Express, Spring) and want to build on Exponential. Exponential describes itself as "a
professional PHP application framework with advanced CMS (content management system) functionality" (README). These
pages translate what you already know into Exponential's terms, say plainly where something works differently, and
say just as plainly where Exponential has no direct equivalent.
Every class, setting and command named on these pages was checked against the kernel, the settings or the existing
documentation. Where a page compares with another framework, it describes what that framework is known for, without
judging it.
Contents #
- Exponential in one paragraph
- Your first hour
- Five things that are different
- Map of the pages
- Pages from other audiences you will use
- Finding these pages again
Exponential in one paragraph #
Exponential 6 is a free and open source PHP application framework and content management system under the GNU GPL,
version 2 or later. A request enters index.php, is matched to a siteaccess (a named configuration per site,
language or administration), translated from a URL alias to a /<module>/<view> address, checked against roles and
policies, handled by a module view, rendered with the template language and placed into the pagelayout. Data
editors manage lives in content classes with versions and translations; your own tables use eZPersistentObject.
Configuration is INI files in layers; code lives in extensions installed with Composer. It is served by Apache or
nginx with PHP-FPM, by Exponential Velocity, a persistent-worker server that is part of the product as of 6.0.15, or
by FrankenPHP. The code base was developed from 1999, first under the name eZ Publish, which its creator discontinued
after almost 18 years; 7x continued it as Exponential (Who is 7x?).
Your first hour #
- Install (10 minutes):
./console exp:install --apply gives a site on SQLite
(Installing in one command). - Orient (10 minutes): Exponential for web framework developers and
your "coming from" page (Symfony, Laravel,
Slim, CodeIgniter, Yii, CakePHP or Laminas,
Django or Rails, Express or Spring).
- Translate (10 minutes): the concept dictionary.
- Follow a request (10 minutes): The request lifecycle.
- Build something (20 minutes to start): Task: build a small CRUD module.
Five things that are different #
- Content is the model. Editorial data is a content class with versions, translations and permissions, not a table
you design (The content model for ORM users).
- Siteaccess before routing. A whole configuration is chosen per request (Siteaccesses).
- No service container. Handlers are named in INI settings (Dependency injection).
- Templates do not escape automatically and are overridden rather than extended (The view layer).
- Persistent workers. Under Velocity, code must not keep per-request state in statics (Servers and deployment).
Map of the pages #
Orientation #
Coming from another framework #
| Page | What it helps you do |
|---|
| Coming from Symfony | Map bundles, kernel events, Doctrine, Forms and Security |
| Coming from Laravel | Map routes, Eloquent, Blade, middleware, queues and Artisan |
| Coming from Slim, CodeIgniter, Yii, CakePHP or Laminas | Map classic MVC and micro framework habits |
| Coming from Django or Rails | Map URLconf, ORMs, the admin, signals and commands |
| Coming from Express or Spring | Understand the PHP process model and map the rest |
The request #
Views and templates #
Data #
Configuration and wiring #
Request handling, events and security #
Background work, APIs and operations #
Exponential with other frameworks #
Hands-on, checks and reference #
Pages from other audiences you will use #
| Page | Why |
|---|
| Application creators: start here | The detailed guides behind most pages here: modules, datatypes, workflows, queues, REST, deployment |
| Extension development: the book | Every extension point, step by step, from user to maintainer |
| PHP developers: start here | The PHP side: language, conventions and the kernel's classes |
| Software engineers: start here | Architecture, quality and engineering practice |
| The template language | The language in depth, with Smarty comparisons |
| Kernel architecture | The authoritative description of the kernel's layers |
| Extension points | The catalogue of every extension point |
| Database support | The supported databases and how each is tested |
Finding these pages again #
In the help, filter by the audience Web Framework Developers; the pages live in the folder
web-framework-developers. Search for a framework's name ("Symfony", "Laravel", "Django") to find the comparison that
mentions it.
Related pages #
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.