How to lint PHP code within the source Ahead-of-time languages check a closed world. Compile a Rust crate, a Go module, a C project with two functions named parse_config, and you never get to run anything at all: the compiler builds the whole symbol table before it hands anything to a linker, and a duplicate […]
Four ways to count to four: PHP strings, iconv, mbstring and grapheme Nothing like starting the day with a nice café, in a Parisian café, pun intended. Now, when you ask PHP how long the word “Café” is, you get four answers from four families of functions. Two of them agree, one says 5, and […]
Recently updated PIE extensions #8 (since September 17th, 2026) 18 PHP Pie extensions were updated. carthage-software/ext-typst (0.4.0): PHP extension for the Typst typesetting engine hmennen90/php-steamworks (v0.16.0): PHP extension providing access to the Valve Steamworks SDK via a flat C API phpolygon/php-vio (2.27.0): PHP extension for GPU rendering (OpenGL, Vulkan, Metal), audio, video recording, streaming, and […]
PHPenomenal 8.6: A Challenge to For PHP’s Next Release PHP 8.6 lands on November 19th, 2026, and with it comes a handful of features that have been simmering in RFCs for a while: partial function application, clamp(), a new Time\Durationclass, #[\Override] on constants, writes on const-held objects, readonly properties with defaults, and a SortDirection enum. […]
Lazy class constants in PHP: fast by design, sometimes surprising PHP has class constant, which are named literals. It also supports static constant expressions, where the value is not always a literal. Rather, it’s an expression that PHP doesn’t evaluate immediately. PHP evaluates it the first time the code needs it. This is the concept […]
Vale Reviews Your Comments In The Code Static analysis will tell you a function’s return type is wrong down to the last nullable. It doesn’t tell you that the docblock two lines above it opens with “This class is responsible for,” restates the method signature it’s sitting on, or, this happened, in a project with […]
Recently updated PIE extensions #7 (since September 10th, 2026) 28 PHP Pie extensions were updated. flow-php/arrow-ext (0.44.1): Apache Arrow PHP extension powered by Rust phpolygon/php-vio (2.25.4): PHP extension for GPU rendering (OpenGL, Vulkan, Metal), audio, video recording, streaming, and input flow-php/flow-php-ext (0.44.1): Flow PHP native extension (Rust) – Floe frame-body encoder/decoder for DataFrame Rows xberg-io/tree-sitter-language-pack […]
What do you mean, redeclare a property static? It started with a single line in a linting run: Fatal error: Cannot redeclare non static DOMElement::$id as static ezcDocumentPropertyContainerDomElement::$id So, a piece of code used to have a property, and now, one of the classes is now trying to redeclare this as a static. Obviously, this […]
Tracing a PHP CLI application with filo filo is a zero-extension PHP call tracer. No PECL module, no Xdebug session: it registers a file:// stream wrapper and rewrites your code’s AST on the way in, so every function entry and exit gets timed. Your files on disk are never touched: instrumented copies live in a […]
PHP Property Resolution Order: Class · Trait · Parent · Interface PHP offers the same four places to define a property that it offers for constants: directly in a class, in a trait the class uses, in a parent class it extends, and, as of PHP 8.4, in an interface it implements. Since these different […]
RisingWave, PHP, and the Streaming Database Idea A regular database answers the question you ask it, once, against whatever state happens to be sitting on disk at that moment. If the data changes a second later, your answer is stale until you ask again. This is why dashboards poll, and why “real-time analytics” has historically […]










