Software engineering
Software engineering on Exponential: architecture, the request cycle, caching, testing and quality.
50 pages
- Software engineers: start here Where software engineers start who evaluate, architect, operate, review or contribute to Exponential as a system. The system in one paragraph, your first hour, five engineering rules, and a map of every page for…
- Exponential for software engineers The whole system on one page for an engineer from any language background - runtime, stack, process model, data stores, configuration, extension model, quality gates and release rules, each with the file or document…
- Reading path for software engineers The software engineering pages in a sensible order, with four shorter paths for the evaluator, the architect, the operator and the reviewer or contributor, and the deeper documents to read after each step.
- Evaluating Exponential A structured technical evaluation of Exponential for a project - the questions to answer about fit, runtime, data, performance, security, quality, maintenance and licensing, how to answer each one from the code and the…
- Architecture overview The layers of an Exponential installation and what each is responsible for - servers, the kernel entry points, the domain classes, the libraries, the presentation layer, extensions, settings and var/ - with the…
- The request lifecycle What happens between a browser request and the response in Exponential, step by step - maintenance and repair hooks, autoload, the kernel constructor, siteaccess matching, URL translation, access checks, the module run…
- Kernel, lib and extensions: the layering The dependency rules between lib/, kernel/classes, kernel/private, the module controllers, the designs and extensions - which layer may call which, where the rules are not met yet, how names show which layer code…
- Siteaccesses and configuration How Exponential is configured - INI files read through eZINI, the order in which override directories win, siteaccess matching, per-environment variants with EXP_ENV, configuration managed by the deployment, secrets in…
- Modules, views and access control How Exponential routes a request to code and decides whether the user may run it - modules, views and policy functions in module.php, class-based views, roles, policies and limitations, the access checks of the dispatch…
- The content model for engineers The Exponential content model as a data model - classes and attributes defined at run time, objects with versions and translations, nodes in a tree, datatypes that own storage and validation, sections, object states and…
- Persistence and the database layer How Exponential talks to its database - the eZDB factory and drivers, eZPersistentObject as the table mapper, transactions that nest by counting, the SQL query cache, isolation levels, and the rules every query must…
- The template engine and the design chain How Exponential renders HTML - the eZTemplate engine that compiles .tpl files to PHP, operators and functions registered from settings, fetch functions as the only data access, the design chain and override rules that…
- Events, extension points and plugins How behavior is added to Exponential without forking it - the in-process event bus ezpEvent with notify and filter, handlers named in settings, datatypes, workflow event types, template operators, fetch functions, login…
- Console, cronjobs and background work How work runs outside a web request in Exponential - the console and its command discovery, eZScript, cronjob parts run by runcronjobs.php, content jobs for large content operations, the expqueue job queue for…
- Databases: choosing and running one The six databases Exponential 6.0.x supports, in the project's order of preference - SQLite 3, PostgreSQL, MongoDB, MariaDB, Oracle, MySQL - compared as an engineer compares them - driver, CI coverage, multi-node use…
- Writing portable SQL How to write queries that run on every database Exponential supports - escaping and casting, limits as parameters, the dialect differences of each driver (row limits, ids, concatenation, MD5, bitwise operators, joined…
- Caching layers for engineers Every cache between a visitor and the database of an Exponential site, seen by an engineer - what each layer stores, what it is keyed on, whether it ships on, who it serves, which servers share it, and the correctness…
- Cache invalidation and clearing How Exponential invalidates its caches on its own (eZContentCacheManager on publish, the content/cache event, expiry timestamps, query cache table tracking) and how to clear them by hand by id or tag, which change needs…
- Application servers The three ways Exponential is served - a web server with PHP-FPM, Exponential Velocity with persistent workers and a response cache, and FrankenPHP in classic mode - compared by process model, state between requests…
- Velocity persistent workers How Exponential Velocity runs PHP - the parent, the warm-up, the zygote and the persistent worker pool, how the pool is sized and when a worker is replaced, what is reset between requests and what is not, which user…
Documentation license
This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.
Exponential Copyright © 1998-2026 Exponential Foundation and 7x