Recent changes
Wednesday November 04 2026
-
Notifications and mail from applications Updated Markdown page
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.
-
OAuth and API keys Updated Markdown page
Choose and use the right credential for programs that call Exponential - OAuth2 clients and the authorize policy, personal API keys with scopes, expservices tokens, HTTP basic, lifetimes, revocation and the audit trail.
-
Content packages (.ezpkg) Updated Markdown page
Move classes, content and settings between installations with packages - what a package carries, the repositories in var/storage/packages, creating one with the package wizard, ezpm.php on the command line, installing…
-
Packaging your application as an extension Updated Markdown page
Turn an application into an installable extension - repository layout, composer.json with the extension type, extension.xml and ezinfo.php, license and copyright, install steps, settings defaults, documentation and the…
-
Persistent objects and custom tables Updated Markdown page
Store application data in your own tables with eZPersistentObject - the definition() array, fetchObject and fetchObjectList, store and remove, function attributes for templates, and when to use tables instead of content…
-
Policy functions and limitations Updated Markdown page
Make an application's permissions manageable in the role editor - declaring policy functions and limitations in module.php, checking them in views and code with hasAccessTo, content permissions with canRead and canEdit…
-
Profiling and performance Updated Markdown page
Find out where an application spends its time - exp:benchmark in HTTP, kernel and micro modes, comparing against a baseline, the debug bar's timings and queries, OPcache and Velocity, and the usual causes of slow pages.
-
Queues with expqueue Updated Markdown page
Run application work in the background with the expqueue job queue - switching it on, enqueueing jobs with options, writing handlers with retries and checkpoints, workers from cron or systemd, and the admin pages.
-
RAD tools: building faster Updated Markdown page
Use Setup > RAD to build extensions in minutes - the catalogue of extension points, the wizards that write working extensions (modules, datatypes, workflow events, operators, handlers, designs), the extension point…
-
Remote services with expservices Updated Markdown page
Drive Exponential from scripts, apps and other front ends with expservices - over a thousand named services, discovery, the answer envelope, the shell and Python clients, tokens, policies per service, and adding a…
-
REST API v1 and v2 for applications Updated Markdown page
Use and extend the REST content API - the ezprestapi routes at v1 and v2, authentication with OAuth2 or personal API keys, permissions, curl examples, configuration in rest.ini, and adding your own REST provider.
-
Scaling applications Updated Markdown page
Grow an Exponential application from one server to many - measure first, caches and Velocity workers, the database, background work, search on Solr, shared storage and clustering, and what each step costs.
-
Database schema and .dba files Updated Markdown page
Ship the tables of your application for every database engine - the .dba schema format, dumping it with ezsqldumpschema, installing it with ezsqlinsertschema, per-engine SQL files, an install command, and upgrades.
-
Security for applications Updated Markdown page
The security rules an Exponential application follows - permissions on every entry point, input validation, output escaping, form tokens, safe redirects, uploads, secrets, CSP-ready markup, logging and disclosure - with…
-
Settings and INI files in your application Updated Markdown page
Give your application settings the Exponential way - your own INI file with defaults, overrides per siteaccess and installation, reading them with eZINI, changing them with exp:ini, caches, and keeping secrets out of…
-
Symfony and the legacy bridge Updated Markdown page
When an application needs Symfony - the legacy bridge that runs the Exponential 6 kernel inside the Symfony platform, which line fits which platform, what stays in legacy, and how to plan a gradual move.
-
Template functions, includes and cache blocks Updated Markdown page
The template language features an application uses most - include, the *_view_gui functions, def/set/undef, foreach, set-block, cache-block with keys and expiry, and how to structure templates of an extension.
-
Writing template operators Updated Markdown page
Add your own template operators - the autoload registration file, the operator class with operatorList, namedParameterList and modify, piped and parameter input, escaping, and when an operator is the wrong tool.
-
Testing applications Updated Markdown page
A testing strategy for applications on Exponential - unit tests without a database, tests against a throwaway database, template and link checks, browser checks with a test user, accessibility, and what to run before…
-
The content API in PHP Updated Markdown page
Read content from PHP - eZContentObject, eZContentObjectTreeNode and eZContentObjectAttribute, fetching by id, remote id and URL alias, subtree queries with filters, data maps, versions and languages, and…