The PHP developer's reading path
This page is for PHP developers who want to read this section in a sensible order. It has six stages. After each stage you can do something you could not do before. The times are rough reading times, without the exercises.
Contents
- Stage 1: orientation (1 hour)
- Stage 2: the rules of the code (2 hours)
- Stage 3: building blocks (half a day)
- Stage 4: data and APIs (half a day)
- Stage 5: security, debugging and performance (half a day)
- Stage 6: runtimes, tests and contributing (half a day)
- Reference while you work
Stage 1: orientation (1 hour)
- PHP Developers: start here
- Exponential for PHP developers
- A tour of the source tree
- How a request runs in PHP
- Setting up a PHP development checkout
After it: you have a working checkout and know where code runs.
Stage 2: the rules of the code (2 hours)
- Supported PHP versions: 8.0 to 8.5
- Writing code that runs on PHP 8.0
- PHP 8 migration notes for your code
- The coding standard (phpcs.xml.dist)
- Why the code has no type declarations
- Class naming and the exp prefix
- Autoloads and class maps
- Reading settings with eZINI
After it: your code passes the checks and fits the code base.
Stage 3: building blocks (half a day)
- Write your first module view (do it)
- Module views as classes
- Write a console command
- Write a cronjob part
- Plain CLI scripts with eZScript and ezexec
- Write a fetch function
- Write a template operator in PHP
- Write a datatype
- Write a workflow event type
- Events, listeners and filters
- Extension points from PHP
After it: you can add screens, commands, scheduled work, template helpers, field types and workflow steps.
Stage 4: data and APIs (half a day)
- SQL with eZDB, safely
- Code for every supported database
- Persistent object definitions in depth
- ezjscore JSON endpoints in PHP
- REST and remote services from PHP
- Composer for PHP developers
After it: you store data portably and serve it over HTTP.
Stage 5: security, debugging and performance (half a day)
- Security in PHP code
- Validating input and casting
- Escaping output from PHP
- CSRF protection and ezformtoken
- Debugging with eZDebug
- The debug bar for PHP developers
- Logs, the log viewer and request logs
- Profiling PHP code
After it: your code is safe, and you can find and measure what goes wrong.
Stage 6: runtimes, tests and contributing (half a day)
- Velocity persistent workers for PHP developers
- Static state traps
- FrankenPHP for PHP developers
- The engine archive (phar) for PHP developers
- OPcache and cache preloading
- PHPUnit without a database
- Database and live tests
- Static analysis with PHPStan
- Git hooks and make targets
- CI and reproducing a red check
- Contributing PHP changes
After it: your code runs under every engine, is tested, and can go into the kernel.
Reference while you work
- Checklists for PHP developers
- PHP developer FAQ
- Glossary for PHP developers
- Extension developer reference
Related pages
- The application creator's reading path
- Software Engineers: start here, Web Framework Developers: start here
- Reading paths of the extension developer book
- PHP Developers: start here
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
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.