Before 5.2 the HTTP kernel had one global middleware stack, so anything needed by web routes also ran for API routes — sessions, CSRF verification and cookie encryption…
Deploying by rsync on a Friday afternoon, and what replaced it: lint, test, build, stage, promote — with a rollback that is the same mechanism rather than a…
Applying several regular expressions with different callbacks meant chaining preg_replace_callback() calls, each re-scanning the whole subject — three patterns, three passes. Patterns are applied in the order given…
Sending a webhook or writing an analytics row after the page has rendered still holds the connection open, because PHP does not close it until the script ends.…
The April LTS changes two things at the same time, and either one alone would be a migration. service still works because systemd ships a compatibility shim, which…
Testing a class that takes an interface usually means either a mocking framework or a small stub class in its own file, which then lives forever and is…
get_option() returns false when the option does not exist, and also when it exists and holds false. Any setting that can legitimately be off is therefore indistinguishable from…
Checking what a relation actually returns usually means writing a throwaway route, hitting it, and deleting it — or adding a dd() somewhere and reloading. Both are slower…