- The help system for extensions Putting an extension's documentation into the admin help: README.md and INSTALL.md on top, Markdown in doc/, shown while the extension is active (ExtensionDocDirs for an inactive one), front matter and audience ids…
- Translating template strings How texts in templates reach translators and back: contexts and sources in i18n calls, translation.ts files in the theme extension, TranslationExtensions, the untranslated and English catalogues, checking coverage…
- Validating input and casting How PHP code in Exponential turns untrusted input into safe values - reading through eZHTTPTool and $Params, (int) and (float) casts with ranges, allow lists with strict in_array, string length and character rules…
- Debugging, logging and errors The Exponential counterparts of the Symfony profiler, Laravel Telescope and Debugbar, Django Debug Toolbar and framework loggers - debug output and the Exp debug bar, template path comments, eZDebug and eZLog, the log…
- Debugging with eZDebug The kernel's debug API for PHP developers - eZDebug::writeNotice, writeWarning, writeError and writeDebug with __METHOD__ labels, conditional debug with eZDebugSetting and debug.ini, timing points and accumulators, who…
- Documenting your extension, including help pages Document an extension where people look: README.md and INSTALL.md on top, the rest as Markdown in doc/, in English; the help center shows it while the extension is active, with front matter, featured pages and context…
- expservices: remote services for extensions What expservices offers extension authors - services over ezjscore with declared access, paging and one envelope, a catalogue, API tokens - and how to write a service of your own.
- Headless Exponential Use Exponential as a content back end for apps and JavaScript front ends - the REST API, expservices, rendered XHTML, images, URLs, preview, caching, permissions, and what stays easier with the built-in templates.
- Installation, environment, audit and CSP operators Seven operators the Exponential kernel added - installation_name, is_production_system, exp_environment, exp_environment_badge, audit_label, csp_nonce and view_parameter - with the settings they read, what they return…
- The secret check before an extension is packaged Why an export of your theme can be refused for holding secret values or key material, what the check looks for, how to fix a real finding, and how package_check.ini names a documentation example the check cannot tell…
- Velocity and performance for integrations What Velocity, the persistent-worker web server of Exponential, means for integrations - classes loaded at start, statics that survive requests, deploying a changed integration, which API answers the response cache may…
- Glossary for extension developers The words this book uses, in one alphabetical list - from access word, append file and attribute to view mode, view parameter and workflow - each with a short definition and the chapter that explains it.
- Notifications and mail from applications Send mail from an application correctly - eZMail with a sender and a category, the mail gate and preferences, transports and the file transport for testing, notification event types and handlers, and templates for mail.
- Page metadata and social sharing Give every page its own title, description, keywords and Open Graph image - with the xrowmetadata extension or fields of your own - and print them safely in the pagelayout.
- Servers and deployment: Apache and PHP-FPM, Velocity, FrankenPHP How Exponential is served and deployed, for developers who know PHP-FPM behind nginx, Laravel Octane, RoadRunner, FrankenPHP worker mode, Gunicorn or Puma - the three ways to serve it, the persistent-worker rules, the…
- Testing integrations A test strategy for Exponential integrations - unit tests without a database for mappings and parsers, test doubles for the other system, script tests with the kernel loaded, dry runs on a copy, the idempotency test…
- The debug bar for PHP developers Using the Exp Debug bar as a PHP developer - the tabs (Messages, Settings, Cache, Timing, SQL, Templates, Included files, Memory, Rendering, User, Server), the summary thresholds, changing debug settings with undo, and…
- A security policy for a theme Write a SECURITY.md for a theme - supported versions, a private way to report, what to include, what reporters can expect - modeled on the policy of the Exponential repository.
- Exponential Intelligence (expai) for applications What the expai extension offers an application - drafts written as the editor, providers and data policy, the job queue, usage and budgets, audit - how to switch it on, and how an application plugs into it.
- Logs, the log viewer and request logs The log files a PHP developer reads and writes - error.log, warning.log, deprecated.log, 404.log, security.log and your own via eZLog::write() - the log viewer in Setup > Logs and on the command line with explogs.php…
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