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…
Adding a field to a response is safe by convention and unsafe in practice, because some client somewhere is validating against a schema that forbids unknown properties. Stating…
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…