setlocale() and Its Six Personalities

setlocale() and Its Six Personalities What does setlocale() actually do? It changes the date format, right? It’s a fair guess, and it’s wrong in an interesting way: setlocale() doesn’t touch one behavior, it touches six, and most of them have nothing to do with dates. Under the hood it’s a thin wrapper around the C […]

The Clock That Cracks Passwords

The Clock That Cracks Passwords

The Clock That Cracks Passwords To understand what is the clock that cracks passwords, let’s start with a quizz. Which security flaw does the following PHP login check contains? If you said “the password should be hashed with bcrypt”, you are right and you may stay. If you said “use === instead”, you are wrong […]

TypePHP, native PHP, NativePHP: the ecosystem has a vocabulary problem

TypePHP, native PHP, NativePHP: the ecosystem has a vocabulary problem

TypePHP, native PHP, NativePHP: the ecosystem has a vocabulary problem PHP names things by accretion. A word gets used for something, then reused for something adjacent, then reused again by a project that picked the name because it was available on Packagist. Nobody arbitrates. Ten years later you have a conference hallway conversation where two […]

Rewritten in PHP

Rewritten in PHP

Rewritten in PHP The application was “rewritten in Rust” meme runs one direction. Or it also goes to Go, just because it is fun. Here’s the traffic going the other way, and why it’s less silly than it sounds. Nobody writes a blog post titled “we ported it to PHP”. The genre convention is the […]

Recently updated PIE extensions #3

PHP Pie updates #4

Recently updated PIE extensions (since August 13th, 2026) 25 PHP Pie extensions were updated. bsn4/grpc (v0.4.0): Rust-based gRPC extension for PHP — drop-in replacement for ext-grpc paragonie/ext-pqcrypto (v0.3.2): PHP extension for post-quantum cryptography (ML-KEM, X-Wing, ML-DSA, SLH-DSA) mongodb/mongodb-extension (2.4.0): MongoDB driver extension phalcon/cphalcon (v5.19.0): Phalcon is an open source web framework delivered as a C […]

The Secret Life of “Magic Null” in PHP

The Secret Life of "Magic Null" in PHP

The Secret Life of “Magic Null” in PHP PHP 8 has started a tightening in native functions arguments: every version brings stricter checks on calls to common functions. Gone are the days of passing null into a function expecting an integer and hoping for the best. Today, usort($arr, null) or array_walk($arr, null) will instantly crash […]

PHP Method Resolution Order: Class · Trait · Parent · Interface

PHP Method Resolution Order

PHP Method Resolution Order: Class · Trait · Parent · Interface PHP offers three different places to define a method: directly in a class, in a trait the class uses, and in a parent class it extends. Interfaces define contracts, the method signatures without a body, so they don’t contribute an implementation to the chain, […]

Recently updated PIE extensions (since 7th, 2026)

PHP Pie updates #4

Recently updated PIE extensions (since 7th, 2026) 24 PHP Pie extensions were updated. bsn4/grpc (v0.3.0): Rust-based gRPC extension for PHP — drop-in replacement for ext-grpc flow-php/flow-php-ext (0.43.0): Flow PHP native extension (Rust) – Floe frame-body encoder/decoder for DataFrame Rows xberg-io/tree-sitter-language-pack (v1.15.0): Pre-compiled tree-sitter grammars for 371 programming languages thomas-0816/pdo-duckdb-php (1.5.5.7): PHP PDO Driver for DuckDB, […]

Recently updated PIE extensions (since July 30th, 2026)

PHP Pie updates #4

Recently updated PIE extensions (since July 30th, 2026) #1 17 PHP Pie extensions were updated. php-debugger/php-debugger (0.2.3): A lightweight, high-performance PHP debugger extension. Comptible with Xdebug step-debugging. phalcon/cphalcon (v5.18.2): Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resource consumption. xberg-io/tree-sitter-language-pack (v1.14.3): Pre-compiled […]

I Checked Every php.* Domain on the Internet

I Checked Every php.* Domain on the Internet

I Checked Every php.* Domain on the Internet There are 1,437 top-level domains recognized by IANA today, things like .com, .museum, .fr, and obscure ones such as .ismaili and .bugatti. I decided to find out how much of the internet’s php.* namespace has actually been claimed, checking php.<tld> against every single one of them and […]