There and Back Again: Round-Trip Testing in PHP Most of the work in a unit test is not calling the function. It is knowing what the function is supposed to return. You call it, you get a value, and now you type the expected value by hand and pray you did the arithmetic in your […]
Constant Scalar Expressions In PHP Constants are the immovable rocks of a PHP application. Once defined, they never change. Yet, since PHP 5.6, those rocks may be carved with expressions. This is the realm of constant scalar expressions, where PHP allows a little bit of calculation in a place that was, for a long time, […]
Hidden Traps with Chained Assignments If you’ve been writing PHP for a while, you’ve almost certainly written a few chained assignments yourself. It’s that neat, concise trick where you initialize multiple variables or properties on a single line: It looks clean. It feels efficient. It’s the kind of line that makes you feel, for one […]
When Generators Actually Makes Sense Generators are one of PHP 8 best-loved features. Sprinkle a yield into a function and suddenly you’re processing millions of rows with constant memory. At least, that’s the promise. The reality is more nuanced: lazy evaluation only pays off when the underlying data source can produce records incrementally. If the […]
Method Fossilisation in 2026 [This is an updated version of this article ‘Method fossilisation’] Method fossilisation happens when methods get harder to update, due to sprawling overwriting. It is a process, more than a final state. In particular, it happens to methods when the signature is shared across multiple classes, via inheritance and interfaces. As […]
Types and Tests: Not Rivals, Just Working Different Shifts A common source of confusion in PHP development is the relationship between static analysis and unit testing. Are they redundant? Does adding types mean fewer tests? Does a comprehensive test suite make a type checker unnecessary? No to all three. They cover different grounds. The interesting […]
Filtering Empty Arrays Before array_merge()? Picture this: you’re looping through something, calling a function each time. It always returns an array, and, sometimes it gives back an empty array. At the end, all these array will be array_merge(…$results) together. The first point is to avoid array_merge() inside the loop, as it is one of the […]
Testing regex with reverse generation I had a regex once that passed 37 hand-written tests. First fuzz run found a crash in 200ms. That’s what this post is about: testing regex with reverse generation using pointybeard/reverse-regex to generate strings guaranteed to match a regex, so you can test your validation code against inputs you didn’t […]
The Empty String in PHP: One Value, Too Many Jobs The humble empty string “” is everywhere. It’s the quiet default, the silent failure signal or the silent success signal, the lazy cast, the natural accumulator. Behind the obvious simplicity of the empty string in PHP lies a surprising amount of overloaded meanings, which leads […]
strpos() Syndrom: When 0 And false Are Not The Same In PHP, several functions can return 0 or false or even null, and all these values may be confused for different things. The most popular function with this syndrom is strpos(), hence the name of this classic PHP bug. strpos() returns the position where the […]
Usages of PHP Static variables I thought static variables were a lesser known PHP feature. Then, I counted about 30% of PHP projects using it, and I realized it was a more common feature than I thought. If you haven’t encountered then, they are distinct from static properties. Within a method, it is possible to […]











