- Errors and debugging The messages the template engine logs - unknown variable, unknown attribute, unknown operator or function, parser errors with line and column, a missing template, def/set/undef misuse - each produced on a development…
- Fetch performance Keeping templates fast when they read content: fetch once, always limit, filter in the fetch, avoid fetches in loops and children on large folders, prefer content_info, use counts for paging, cache expensive parts, and…
- Multilingual content Serve an app in several languages from Exponential content - locales such as eng-US and ger-DE, the Translation parameter of REST reads, languageLocale on create, the site's languages from explanguage services…
- Testing a bundle What to test before a bundle release - the build, a clean install with each database and PHP version you claim, the first boot, an offline install, permissions, security checks, integrity, an upgrade from the previous…
- The swark operators How the swark extension registers its 37 one-class-per-operator template operators, the SwarkOperator base class with name=default parameter strings and compiled execute() calls, which of its names other extensions or…
- Velocity persistent workers for PHP developers What changes for PHP code when Exponential runs under Velocity, the recommended application server - workers that boot once and serve many requests, the warm-up, what the kernel resets between requests, per-request…
- Swark operators: arrays, strings and URLs Every array, string and URL operator of the swark extension - sort, rsort, asort, arsort, ksort, krsort, shuffle, array_search, range, set_array_element, remove_array_element, split_by_length, shortenw, preg_match…
- Swark operators: request and system The request and system operators of the swark extension - charset, current_siteaccess, current_layout, is_post_request, server, cookie, user_id_by_login, variable_names, debug, debug_attributes, redirect, return and…
- Coming from Laravel A guide for Laravel developers - routes, controllers, Blade, Eloquent, migrations, middleware, gates, queues, the scheduler, Artisan and Octane, each with its Exponential counterpart, what you get without code…
- Internationalization and right to left The internationalization model of Exponential for engineers - locales from CLDR data, content languages stored as bits of a language mask with a limit of 62, translation catalogues in Qt Linguist format, fallbacks…
- Nodes, objects and attributes The three things content templates work with: the node (a place in the tree), the content object (the content with its versions) and its attributes (the fields in data_map), with the node attributes designers use most…
- Operators of smaller extensions The template operators of ezoe, ezwt, enhancedezbinaryfile, recaptcha, xrowmetadata and bcwebsitestatistics - ezoe_ini_section, ezcreateclasslistgroups, parsexml, recaptcha_get_html, metadata, the six…
- Overriding templates How the template system finds a template (override rules first, then the designs in order), the syntax of override.ini.append.php, and the match keys.
- Packaging your application as an extension 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…
- Rich text in apps Show article bodies (ezxmltext rich text) in an app - why the REST value is plain text, the three options (plain text, rendered XHTML in a web view, a structured export from a server endpoint), links and embedded images…
- Static state traps An explanation of the bugs that come from state kept between requests or tests - function statics, register-once flags, statics assigned outside the class body, per-request caches keyed by time, settings and singletons…
- The kernel service container How PHP code asks the kernel for shared objects by name (expKernelServices::get()), how to define a service in kernelservices.ini with a class or factory, arguments, a scope and tags, what worker, request and prototype…
- attribute_view_gui Drawing one field of content with attribute_view_gui: how it picks the datatype template, extra parameters such as image_class, override keys (attribute_identifier, class_identifier) to restyle one field of one class…
- Coming from Slim, CodeIgniter, Yii, CakePHP or Laminas A guide for developers from Slim, CodeIgniter, Yii, CakePHP and Laminas (Zend Framework) - how their controllers, models, views, configuration, middleware and modules map to Exponential, which conventions will feel…
- Composer packages and Packagist Publish an extension as a Composer package - the package name and type, version constraints, tags, Packagist and its webhook, installing a package into an installation, and updating safely.
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