Removing a method from an interface leaves every implementation with a public method nothing calls, and the language has no opinion about that. The #[Override] attribute turns this…
Fetching a class constant by a variable name required constant() with a string concatenation, which no tool could follow. The syntax is better than the string concatenation mainly…
Two integer columns and a currency string, reassembled by hand in every place that needed a total. A cast that reads several columns and writes several is the…
Constants were the last untyped declaration in the language, and 8.3 fixes that with the covariance rule you would expect. The type is checked at compile time on…
8.3 relaxed one readonly restriction and not the one everybody wants, so a wither is still a constructor call. The __clone relaxation is narrower than it first reads:…