PHP 8.5 and 30 Years of PHP
· Jerwin Arnado
Archive note: this is a backdated post, written years later while rebuilding this site. It’s dated to the moment it covers, but the hindsight is real.
PHP 8.5 shipped November 20, right on the annual schedule — and this year’s edition of the language notes carries an anniversary: 2025 marks thirty years since Rasmus Lerdorf posted his “Personal Home Page Tools” to a mailing list in June 1995. The language that every hype cycle has declared dead is now older than some of its detractors, runs an enormous share of the web, and — per six consecutive years of this column — keeps improving more dependably than almost anything else in the stack.
The headliner: the pipe operator
The feature with the longest RFC pedigree finally lands:
$slug = $title
|> trim(...)
|> strtolower(...)
|> (fn($s) => preg_replace('/[^a-z0-9]+/', '-', $s));
The |> pipe operator threads a value through a chain of callables, top to bottom, the way the data actually flows. Anyone who’s written Laravel Collections — or shell pipelines, where I’ve always lived — already thinks this way; the language now matches the thought. The nested-call inside-out reading order (preg_replace(strtolower(trim($x)))) joins getName() ceremonies in the museum of things the 8.x era retired, and the first-class callable syntax from 8.1 reveals itself as the quiet groundwork it was.
The supporting cast is solid quality-of-life: array_first()/array_last() (completing 8.4’s array_find family — the helpers-file purge continues), fatal error backtraces (the blank-screen fatal finally tells you how it got there — a debugging gift to every developer, and disproportionately to every junior), #[\NoDiscard] for return values that must not be ignored, and the steady accumulation of smaller sharpenings the annual cadence normalizes.
Thirty years, read as a lesson
The anniversary invites the question this blog keeps circling: why is PHP still here? The fashionable answer involves inertia and WordPress. The engineer’s answer, after six years of documenting the releases, is better: PHP is the web’s most successful example of iterating in place. No rewrite-the-world moment, no breaking schism (the Python 3 decade, the Perl 6 disappearance), no abandonment of its deployment model — just thirty years of meeting actual developers where they actually work, then improving annually until the jokes described a language that no longer exists.
There’s a career lesson in that arc I only see clearly at thirty: betting on the unfashionable-but-shipping thing has paid this blog’s author for his entire working life — through every JavaScript framework funeral, every “PHP is dying” cycle, every paradigm that was definitely the future for eighteen months. The tools that survive aren’t the ones that win the discourse. They’re the ones that hold still and keep shipping while the discourse moves on.
Upgrade posture
The familiar rhythm, in its settled groove: 8.4 → 8.5 is gentle, framework support lands fast, ecosystem by Q1, deprecation report before, afternoon budget for most codebases. The pipe operator will appear in my code the day the upgrade lands; some features you adopt out of duty, and some you’ve been waiting for since you first saw them elsewhere.
Thirty years old, and the November release is still the most dependable good news in my calendar. Happy birthday to the language that taught me the trade — may the next thirty be exactly this boring.