The upgrade is usually measured in request latency. The larger operational change is memory: PHP 7 rewrote the internal value representation, and arrays in particular use a fraction…
Objects cannot be array keys, so checking whether an object is already in a collection usually turns into in_array($obj, $list, true) — a linear scan that gets slower…
Code that calls time() or new DateTime() internally cannot be tested at a chosen moment. The usual workarounds are a sleep() in the test, which makes the suite…
A PHP warning does not stop execution. file_get_contents() on a missing file warns and returns false, and the code carries on with false where a string was expected…
The obvious reading of finally is “runs after the try block finishes”. The useful reading is stronger: it runs on the way out no matter how you leave,…
Two days lost to PHP extension mismatches. A container per service, what the shared-folder performance problem costs on a VM, and whether it was worth it.
A fatal error is not an exception and cannot be caught. In 5.6 that includes calling a method on null and exhausting memory_limit — the request dies, the…