PHPenomenal 8.6: A Challenge to For PHP's Next Release
PHPenomenal 8.6: A Challenge to For PHP’s Next Release

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. Reading a changelog is one thing. Actually reaching for these features in real code is another — and that gap is exactly what PHPenomenal 8.6 is built to close.

What It Is

PHPenomenal is a community challenge, open until PHP 8.6’s release, with a deceptively simple brief: write a useful PHP application that actually uses the new PHP 8.6 features. Not a toy snippet demonstrating syntax — a real program that takes input, runs, and produces output within a reasonable time, on a single machine.

“Useful” is left deliberately loose. Fizz-buzz with algebraic numbers counts. So does a calculator that echoes its arguments. The point isn’t to build the next killer app — it’s to get hands-on with language features before they ship, and to see how other developers are interpreting them.

The Feature List

There’s a core list every submission is expected to touch:

  • Partial Function Application
  • Time\Duration
  • clamp()
  • #[\Override] on a constant
  • Writes on const-held objects
  • Readonly property defaults
  • SortDirection enum

And a secondary, optional list for extra credit — things like the polling API, trim()‘s new Form-Feed handling, the reworked stream error management, the array_map() optimization, doc comments in function parameters, and __debugInfo() on enums. This secondary list is explicitly open to growing as more PHP 8.6 quirks get discovered and written up.

The Rules (There’s Basically One)

Share at least one application, with its source, by the end of the event. It has to compile under PHP 8.6 — compiling under 8.5 isn’t required and, for some features, won’t even be possible. Beyond that: architect it however you like, add assets, pull in Composer, write tests, run static analysis. Nobody’s stopping you from going overboard.

The one hard constraint is scope: keep the application self-contained on one machine. No downloading a remote dataset just to demonstrate clamp() on an integer.

How to Join

Participation happens through the repo’s issue tracker — open an issue to declare your intent, and update it as you go. A README explaining what you’re building is encouraged, and so are dev diaries and sample output along the way. Feeling ambitious? Open a second issue for a second idea. And browsing other participants’ issues to comment and compare notes is very much part of the fun.

Checking Your Work

The repo ships a small tool for this exact purpose: scripts/check-php86-features.php. It’s not a naive string search — it tokenizes your source with PhpToken::tokenize() and checks the actual token stream, so a feature name sitting in a comment or a string literal won’t falsely count as “used.” Point it at your file:

php scripts/check-php86-features.php path/to/your-file.php

and it reports, feature by feature, what it found and where — plus what’s still missing.

You’ll also want PHP 8.6 itself on hand to lint against (php8.6 -l yourfile.php). The README lists several ways to get there: pre-release builds from php.net, Docker images, Homebrew on macOS, or compiling from source.

Why Bother

New language features only prove their worth once people try to break them, combine them in unexpected ways, and hit the edges the RFC didn’t anticipate. PHPenomenal turns that process into something social and a little competitive — and yes, there’s a prize: the best (especially the funniest) submissions earn an elePHPant.

Site of action: https://github.com/dseguy/phpenomenal

The event is run by Damien Seguy (@dseguy) and Jon Purvis (https://x.com/JonPurvis), reachable on the repo or the PHP community Discord.

Deadline: November 19th, 2026, 00:00 UTC, aka the moment PHP 8.6 officially exists.

If you’ve been meaning to actually understand what Time\Duration or partial function application look like in practice, rather than just reading about them, this is a good excuse.