Putting a cache inside a repository mixes two concerns and makes the uncached version untestable, and the alternative is a second implementation of the same interface. The decorated…
Composing generators by looping and re-yielding works and loses the inner generator’s keys and its return value, which is usually discovered much later. Keys from the inner generator…
Passing money as an integer means every function taking it validates it, and every one of those validations needs a test — a type that refuses to exist…
A repository interface returning ORM models and accepting query builders has renamed the ORM rather than abstracted it, and swapping the implementation is still impossible. Named methods rather…
16.8 shipped on 6 February and the migration pressure was immediate and mostly self-inflicted. What they actually solve, and what the dependency array means.
The question when writing a constructor is what you are allowed to type-hint for, and the answer is in the compiled container rather than in any documentation. It…