8.0 puts models in app/Models by default, and an existing project can move them or not — but the reason to move is not the convention. Forty-one files…
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…