Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

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…

Download as PDF

Address: https://doc.exponential.earth/learninminutes/exphelp/viewer/help/software-engineers/exponential-for-software-engineers.md

On this page

Exponential for software engineers

This page is for engineers who need the whole system in one view before they read the details. It is written for people from any language background: where Exponential does something differently from the frameworks you may know, the page says so. Every row names the file or document that is the source of truth.

Contents

  1. The stack
  2. What kind of system it is
  3. Where things differ from other frameworks
  4. Constraints you inherit
  5. Where the truth lives

The stack

ConcernWhat Exponential usesSource
LanguagePHP 8.0 to 8.5 (PHP 7.4 usable without support) ("php": "^7.4 || ... || ^8.8")composer.json
PackagesComposer; the root package is se7enxweb/exponential, type ezpublish-legacycomposer.json
LicenseGNU GPL, version 2 or laterLICENSE, composer.json
DatabasesSQLite 3 (default), PostgreSQL, MongoDB, MariaDB, Oracle, MySQLDatabase support
ConfigurationINI files read through eZINI, merged in a fixed orderSiteaccesses and configuration
TemplatesIts own template language (.tpl), compiled to PHP by eZTemplateThe template engine and the design chain
ServersApache or nginx with PHP-FPM, Exponential Velocity (qbix engine), FrankenPHPApplication servers
TestsPHPUnit (phpunit.xml), most suites without a databaseTesting strategy
Static checksPHPStan level 1 with a baseline, PHP_CodeSniffer with the project's own sniffsStatic analysis and code style
CIGitHub Actions: Quality, PHPUnit, Performance, CI healthCI gates

What kind of system it is

  • A content repository with an application framework around it. The center is a content model that administrators define at run time (content classes with typed attributes), versioned objects, and a tree of locations. Most code you write reads or changes that model (The content model for engineers).
  • A modular monolith. One installation is one PHP application: the kernel, its libraries and the extensions run in the same process and share one database. Extensions are directories, not services.
  • Configuration-driven. Modules, datatypes, workflow events, template operators, cronjob parts, caches and handlers are all found through INI settings, so most extension points are "add a line to a settings file and a class to your extension" (Events, extension points and plugins).
  • Server-rendered first, API-capable. Pages are rendered by templates; JSON endpoints (ezjscore), a REST API (ezprestapi) and remote services exist for headless and app use (API design).

Where things differ from other frameworks

You may expectIn Exponential
PSR-4 namespaces everywhereThe kernel keeps its class names (eZContentObject, eZINI) and a generated class map; newer code uses the exp prefix and, for the runnable classes, namespaces such as Exponential\Runnable
A router fileModule and view definitions in module.php, URL aliases in the database, siteaccess matching from site.ini
An ORM with migrationseZPersistentObject (one class per table, a definition() array) and SQL update files per driver, applied by hand
Environment variables for configINI files in a cascade; environment-specific settings are supported (Environment settings)
Twig or BladeThe Exponential template language, with operators, functions and fetch functions; Symfony and Twig only through the legacy bridge
Type declarationsThe kernel style forbids PHP 7+ scalar and return type declarations, because the code must run on PHP 8.0 and keep its signatures (Code style)

Constraints you inherit

Where the truth lives

QuestionDocument
How is the kernel built?Kernel architecture
Which layer may call which?Layering and naming rules
What is a break, how is it released and deployed?Compatibility, releases and deployment
How are commits and releases made?Source control and releases
Which patterns does the code use?Design pattern catalogue
What changed in a release?Changelog 6.0.15 and the upgrade notes in doc/eng-us/bc/6.0/

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.

Something wrong on this page? Report an error

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