Recent changes
Wednesday November 04 2026
-
Your first 30 days as a partner Updated Markdown page
A week-by-week plan for the first month of an Exponential partnership - set up, become visible, learn the support routine, make a first contribution and plan the year - with the outcome you should have at day 30.
-
Your first year as a partner Updated Markdown page
A quarter-by-quarter plan for the first year of an Exponential partnership - foundations, first referenceable project, visibility and contributions, and the renewal review - with goals, measures and a review template.
-
Your partner page Updated Markdown page
How to write the partner page every Exponential Partner gets on share.exponential.earth - structure, wording, references, contact, accessibility, upkeep - with a ready-to-fill template.
-
Setting up a PHP development checkout Updated Markdown page
A working checkout for PHP work on Exponential - clone, Composer, a SQLite installation, the dev environment name, the development tools in .devtools/, the git hooks, debug settings and the commands you run every day.
-
A tour of the source tree Updated Markdown page
Every top-level directory and entry point of an Exponential checkout from a PHP developer's point of view - where the kernel, the libraries, the commands, the settings, the tests and the generated files live, and which…
-
CI and reproducing a red check Updated Markdown page
The continuous integration of the Exponential repository from a PHP developer's side - the Quality, PHPUnit, Performance and CI health workflows, what blocks, how a pull request is tested, and the local command for each…
-
Class naming and the exp prefix Updated Markdown page
How to name PHP classes, files, functions, settings and tables in Exponential - your own prefix, exp for code contributed to the project, sevenx for 7x, why kernel eZ identifiers are never renamed, file names…
-
Code for every supported database Updated Markdown page
Writing PHP and SQL that works on all six databases Exponential supports - SQLite 3 (the default), PostgreSQL, MongoDB, MariaDB, Oracle and MySQL - the driver classes, the portable helpers of eZDBInterface, schema files…
-
Contributing PHP changes Updated Markdown page
How a PHP change reaches the Exponential kernel - the contributor license agreement, fork and branch, the checks to run before a pull request, commit messages, tests, the file manifest, review rounds, squashing and…
-
CSRF protection and ezformtoken Updated Markdown page
How cross-site request forgery is prevented in Exponential and what PHP code must do - the ezformtoken listeners on request/input and response/output, which requests are checked, the form field and the X-CSRF-Token…
-
Database and live tests Updated Markdown page
Tests that need a real database or server - the database group and tests/runtests.php with a DSN and a database per test, the MongoDB and live HTTP tests and their environment variables, how to pass passwords safely…
-
Debugging with eZDebug Updated Markdown page
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…
-
Escaping output from PHP Updated Markdown page
How to escape values that PHP code writes into HTML, attributes, URLs, JSON, CSV, shell commands and logs - htmlspecialchars() with explicit flags for PHP 8.0, the wash operator and why templates are the better place…
-
Events, listeners and filters Updated Markdown page
The kernel's event hub ezpEvent for PHP developers - notify and filter events, registering listeners in site.ini [Event] and [RunnableSettings] or with attach(), the events the kernel sends, writing a filter that…
-
Exponential for PHP developers Updated Markdown page
What a PHP developer meets in Exponential - a large, mature PHP code base with its own conventions, generated class maps, layered INI settings, persistent objects and a template engine - and how it differs from a…
-
Extension points from PHP Updated Markdown page
Where PHP code plugs into Exponential without editing the kernel - the registration mechanisms (directory, handler, autoload, file, design, ini, registry, filter, override), the extension points a PHP developer uses…
-
ezjscore JSON endpoints in PHP Updated Markdown page
Writing ezjscore server functions in PHP - the [ezjscServer_<name>] block, the static method that receives the arguments array, the answer envelope, permissions with Functions[] and RequirePolicy, POST writes with the…
-
FrankenPHP for PHP developers Updated Markdown page
What a PHP developer needs to know when Exponential is served by FrankenPHP through exp:velocity - classic mode with a clean state per request, why worker mode is not offered, the embedded PHP and its ini settings, the…
-
Git hooks and make targets Updated Markdown page
The local checks of the Exponential repository - the pre-commit, commit-msg and pre-push hooks in .githooks/, every make target from make check to make lint80-all, the file manifest share/filelist.md5, and the commit…
-
Glossary for PHP developers Updated Markdown page
The terms a PHP developer meets in Exponential code and documentation, from accumulator and append.php to worker and zygote, each with a one-line meaning and the page or file that explains it.