PHP in 2026

Written on 2026-01-13

Join over 14k subscribers on my mailing list. I write about PHP news, share programming content from across the web, keep you up to date about what's happening on this blog, my work on Tempest, and more.

You can subscribe by sending an email to brendt@stitcher.io.

Hi

It seems to be becoming a tradition: I start every new year with a list of things I'm looking forward to for PHP. You can continue to read here; or, if you want to read in your browser or watch the video, you can check out the blogpost as well.

As always, don't hesitate to reply: what are the things you're looking forward to the most in 2026?

PHP 8.5

PHP 8.5 was released at the end of November last year, but in practice, most people will only start using it in 2026. PHP 8.5 has a couple of nice features. There's the pipe operator, but honestly — there's an important feature missing from it (hang on, I'll come back to this one):

$output = $input 
    |> trim(...)
    |> fn (string $string) => str_replace(' ', '-', $string)
    |> fn (string $string) => str_replace(['.', '/', '…'], '', $string)
    |> strtolower(...);

Another PHP 8.5 feature is that you can clone an object while passing data to them — personally I would have preferred another implementation, but it's still a nice feature:

final class Book
{
    public function __construct(
        public string $title,
        public string $description,
    ) {}

    public function withTitle(string $title): self
    {
        return clone($this, [
            'title' => $title,
        ]);
    }
}

PHP 8.5 has had some improvements to closures so that they can be used in attributes:

#[SkipDiscovery(static function (Container $container): bool {
    return ! $container->get(Application::class) instanceof ConsoleApplication;
})]
final class BlogPostEventHandlers
{ /* … */ }

There are now also backtraces for fatal errors:

Fatal error: Maximum execution time of 1 second exceeded in example.php on line 6
Stack trace:
#0 example.php(6): usleep(100000)
#1 example.php(7): recurse()
#2 example.php(7): recurse()
#3 example.php(7): recurse()
#4 example.php(7): recurse()
#5 example.php(7): recurse()
#6 example.php(7): recurse()
#7 example.php(7): recurse()
#8 example.php(7): recurse()
#9 example.php(7): recurse()
#10 example.php(10): recurse()
#11 {main}

And a bunch of other small things. All in all, it's a solid release, although nothing really super exciting. Now let's circle back to that pipe operator and how it will become a lot more awesome in 2026.

Partial function application

At the very end of 2025, a new RFC got accepted that adds partial function application. It's a complex name for something that's rather simple to explain: with partial function application, you can create a reference to a function where some of its parameters are already filled in:

$makeSlug = str_replace('-', ' ', ?);

$slug = $makeSlug('Hello World');

Notice that question mark? That's a "placeholder" to filled in later. There are many things to say about PFA, but I'll keep those for another blogpost.

Now PFA is especially awesome because it allows you to create a closure with exactly one parameter from any other function. Combine that with the pipe operator which always needs a callable with exactly one parameter and… you can rewrite the previous example:

$output = $input 
    |> trim(...)
    |> fn (string $string) => str_replace(' ', '-', $string)
    |> fn (string $string) => str_replace(['.', '/', '…'], '', $string)
    |> strtolower(...);

Like this:

$output = $input 
    |> trim(...)
    |> str_replace(' ', '-', ?)
    |> str_replace(['.', '/', '…'], '', ?)
    |> strtolower(...);

Much better! I'd say that PFA will unlock the true potential of the pipe operator, and so I'm really happy it's coming in PHP 8.6 (which will be released at the end of 2026).

Pattern matching

Another RFC with lots of potential is the pattern matching RFC. Be careful, though: this one is still under discussion, there's a lot of potential here and I hope it'll be accepted:

$string = match ($object) is {
    Foo => 'foo',
    Bar => 'bar',
    Baz|Beep => 'baz',
};

if ($var is 'heart'|'spade'|self::Wild) {
    // Hi!
}

FrankenPHP

FrankenPHP has been here for a couple of years, but last year FrankenPHP and the PHP Foundation started to work together.I'm just going to go ahead and say what many people think: I hope FrankenPHP will become the default runtime for PHP.

If you're unfamiliar with FrankenPHP and want to learn more, you can watch this talk by its creator. In short, FrankenPHP is a new runtime for PHP, written in Go, and has many cool features like worker mode for long-running PHP scripts, a "compile to binary" option for fast deployments, modern HTTP features, and more.

I'm really hopeful for FrankenPHP to gain more traction this year, especially since it can be a fairly simple drop-in replacement for PHP-FPM, all while giving a 10% performance increase without doing anything.

Mago

Another tool uplifting the PHP Ecosystem is Mago: it's a new toolchain for PHP that recently tagged its first stable release. It's a linter, formatter, and static analyzer for PHP — but it's written in Rust, making it superfast and efficient.

I've been using it myself for months and think it's a really great tool that will see tremendous growth this year.

TrueAsync

Something else that has the potential to be truly game-changing for PHP is the work that Edmond has been doing on async PHP. He's currently on the seventh version of his RFC, continuing to fine-tune it, it's a difficult problem to solve, but he seems to be very persistent.

I'm curious to see how async PHP will play out. Edmond seems to focussing mostly on multithreading for CPU-heavy tasks, while I think async I/O would benefit more PHP projects in the short-term. Nevertheless, it's another thing that we'll need to follow up closely.

PHPverse

My second to last thing to mention is PHPverse. Last year we organized this online conference for the first time, and it was a huge success. We had over 5000 people follow the event live, and then thousands and thousands more watching afterwards.

So I'm happy to announce that PHPverse is coming back in 2026! I cannot share any more details for now, but I'll keep you in the loop!

Tempest

The last thing is something more personal. Over the past two years, I've been working together with a bunch of talented programmers from all over the world on Tempest, a new framework for modern PHP development. I'm so looking forward to seeing what 2026 will bring for the project. We're currently working on a third major release, and I'm amazed by how many people have decided to help out: more than 80 contributors and 600 Discord members have joined the project and are following along. It's amazing to see the power of open source come to life, and for me, it'll be a personal highlight of the year.


Those are my highlights. What are yours? Hit reply and let me know!

Until next time!

Brent

Join over 14k subscribers on my mailing list. I write about PHP news, share programming content from across the web, keep you up to date about what's happening on this blog, my work on Tempest, and more.

You can subscribe by sending an email to brendt@stitcher.io.

Noticed a tpyo? You can submit a PR to fix it.
Home RSS Newsletter Discord © 2026 stitcher.io Login