Putting PHP’s M_EULER to Work PHP ships with more mathematical constants than most developers ever use. One of the most overlooked is M_EULER, which is the Euler constant. So, before putting PHP’s M_EULER to work, we need to clear up a confusion with another Euler constant in PHP: M_E. M_E vs M_EULER: Two Constants, Two […]
Also PHP: A Curated Watchlist for the PHP Ecosystem PHP runs more of the web than most people admit. And yet, when a new developer tool ships — a security scanner, an AI code assistant, a code counter, a refactoring engine: PHP support is often an afterthought, a footnote, or simply missing. Also supports PHP […]
Five Ways to Write a PHP Type PHP’s type system is grown up. PHP 7.0 started the ball rolling with parameter and return types. PHP 7.4 added property types. PHP 8.3 added the class constant types, though we’ll omit this for now. PHP has quietly accumulated five distinct syntaxes where you can write something that […]
PHP and AI: What Actually Exists at the Language Level PHP runs about three-quarters of the web, and yet whenever AI comes up in conversation, PHP is the friend who wasn’t invited to the party. The received wisdom is that AI belongs to Python and that PHP developers are limited to politely calling someone else’s […]
The turbofish meet the elephpant: 🐟 Somewhere, probably on an infinite step of grass, the turbofish meets the elephpant. You’ll need imagination to picture that, for sure, but by November, you’ll probably have it in your reality. So, what is this new fish, and what does it have to do with generic types? Let’s take […]
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 […]
The Art of Being Anonymous in PHP This post is a tour of PHP’s nameless constructs: from closures and arrow functions to anonymous classes and non-binding catch blocks. Every day, in most PHP code, things have names. Variables are named, classes have identifiers, functions are called by their name. Though, PHP also offers a rich […]











