The Advantage of Fixing All PHP Warnings I have spent a ungodly amount of my life reading other people’s PHP warnings. Scanning codebases for a living does that to you. And after a few million lines, I’ve come to a conclusion that sounds boring until you think about what it actually means: a warning is […]
When Your Lint Tool Calls Your Method “Difficult”: A Halstead Story Start with the report itself Static analyzers love to tell you that your method is too long, too complex, or too nested. But every once in a while, one of them produces a warning that feels more personal. This one passes judgment not just […]
From Commit to Production: How a PHP Fix Actually Reaches You A security fix landed in PHP: 2026, Oct 21st. The announcement is summed up in one line: “2 CVE, fixed in PHP 8.5.12”. Then an impressive machinery, usually invisible, is set in motion, and pushes that fix to your servers. The fix itself has […]
Recently updated PIE extensions #9 (since September 24th, 2026) 27 PHP Pie extensions were updated. iliaal/mdparser (0.7.0): Native C CommonMark + GitHub Flavored Markdown parser for PHP, targeting CommonMark 0.31 + GFM. ~10-20x faster than pure-PHP parsers, zero runtime dependencies. symfony/deepclone (v0.8.7): Export any serializable PHP values as pure arrays – accelerator for Symfony’s DeepCloner […]
ulimit and PHP: When the OS Says No You set memory_limit and max_execution_time in php.ini and feel in control. You are, in fact, but you are also not the only one in control. Underneath PHP, the kernel keeps its own ledger of what a process is allowed to do, and it does not negotiate. That […]
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 […]
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 […]
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 […]
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 […]










