A generated file recording every existing error is the thing that makes static analysis adoptable on a codebase that has never had any. Reading it once by directory…
An @include with eleven variables and no way to know which are required. A partial is a file rather than a contract, and 7.0 makes the constructor the…
An object literal widens to its general types, so a configuration object loses exactly the information that would have made it useful. The last two lines are the…
A closure needing three variables from the enclosing scope required a use clause listing all three, which is why a one-line callback was four lines. The capture is…
Throwing from __toString was a fatal error, which meant a value object that could not render itself had to return a placeholder string and hope somebody noticed. 7.4…
0.12 shipped in December with a baseline generator, and it is the feature that makes static analysis adoptable on a codebase that has never had any. The file…
Setting a default only when a key is missing was $a[‘k’] = $a[‘k’] ?? $v;, which evaluates the subscript twice and reads as a statement about itself. The…
Merging arrays was array_merge, which is a function call in the middle of what is otherwise a literal, and the argument order is not obvious to anyone reading…