A closure rule copied into eleven form requests, with two of the copies subtly out of date. The interface is a small improvement over the previous one —…
PHPUnit 10 requires data providers to be static methods, which breaks any provider that touched $this. The restriction exists because providers run before the test case is set…
Nothing in the profile looked slow, and one function accounted for 80 seconds of a 94-second job. Sorting a profile by self time per call finds the slow…
A report query object with nine constructor parameters, six of them nullable, called from four places with different subsets. Named arguments make the nine-parameter constructor tolerable, and tolerable…
Three packages in the same application, each with its own curl wrapper, each with its own idea of what a timeout means. The value is not the abstraction,…
A command with 80 lines in execute(), none of which could be called from anywhere else, including a test. The command should parse input, call one thing, and…
An event listener marked as queued, doing 20 seconds of PDF generation, and failing in a way that made the original event look like the problem. A queued…
Forty lines of proc_open wrapping, written in 2018, replaced by four — and the part that mattered was the testing. The wrapper had been correct and nobody wanted…