A constructor with an optional dependency needed a null default and a line of null-coalescing, in every class that had one. The exclusion of property defaults is the…
8.1, and a keyword that removes a getter per property. Forty value objects, each with private fields and public accessors that existed only to prevent writes.
A pure enum has cases and nothing behind them, which makes it useless for a database column and exactly right for a distinction that only exists inside the…
Requiring something that is both Countable and Traversable previously meant declaring an interface extending both and changing every implementing class. The restriction to class and interface types is…
get_object_vars respects scope, so the same call returns different arrays depending on where it is written. The scope sensitivity is documented and is nearly always encountered as a…
Constructor promotion needs a constructor body to assign into, so it is not available on an abstract constructor or in an interface. An abstract class with a concrete…
Preloading compiles and links classes into shared memory at startup, and the linking is what makes it different from opcache. The measured gain on a typical framework application…