<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title><![CDATA[The PHP Foundation]]></title>
    <link href="https://thephp.foundation/atom.xml" rel="self"/>
    <link href="https://thephp.foundation/"/>
    <updated>2026-04-02T15:09:22+00:00</updated>
    <id>https://thephp.foundation/</id>
        <generator uri="http://sculpin.io/">Sculpin</generator>
            <entry>
            <title type="html"><![CDATA[Welcoming Matt Stauffer to The PHP Foundation Board]]></title>
            <link href="https://thephp.foundation/blog/2026/03/25/welcoming-matt-stauffer-to-the-php-foundation-board/"/>
            <updated>2026-03-25T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2026/03/25/welcoming-matt-stauffer-to-the-php-foundation-board/</id>
            <content type="html"><![CDATA[<p><img src="/assets/post-images/2026/matt-stauffer/matt-stauffer.jpg" width="300" alt="headshot of matt stauffer" class="mb-4 sm:mr-4 sm:float-left"/> We are thrilled to announce that <a href="https://www.linkedin.com/in/mattstauffer/">Matt Stauffer</a> has agreed to join The PHP Foundation Board, where he will bring his decades of experience in the PHP ecosystem. Matt joins the Board as a community representative and was voted in by the existing Board members. Not only is Matt a Laravel expert, he has created / maintained dozens of PHP and JavaScript open source packages, he is a published author, and he hosts several successful industry podcasts. We are grateful for his insight, input, and leadership as we further our mission of sustaining a thriving PHP language and ecosystem.</p>

<p>Please join us in welcoming Matt to the Foundation Board!</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[Working Together on the Future of PHP]]></title>
            <link href="https://thephp.foundation/blog/2026/03/05/working-together-on-the-future-of-php/"/>
            <updated>2026-03-05T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2026/03/05/working-together-on-the-future-of-php/</id>
            <content type="html"><![CDATA[<p>I’m incredibly excited to be joining the PHP Foundation as the Executive Director and continuing the work that has been done under the leadership of Roman Pronskiy and the Board. For those who don’t know me, I look forward to meeting you!</p>

<h2 id="a-little-about-me">A little about me</h2>

<p>PHP was my introduction to open source, when PHP 3 was the latest release. It was mind blowing to see an amazing group of smart, funny people collaborate with each other, help newbies, and build impactful things together while still having fun. People who lived thousands of miles away from each other and who had never met each other. People who had completely different backgrounds and daily lives. People who spoke different languages and lived in different time zones. They all managed to find a way to come together as a community. They wrote code, they organized events, they started local user groups, they built projects together, and they helped each other learn. Forgive my sentimentality, but it was (and still is) magical.</p>

<p>It was this sense of community that fascinated me most, and I found myself moving from PHP development to open source community management. Since officially making that switch in 2010, I’ve worked for companies like GitHub, Sourceforge, and Pivotal, striving to make open source healthier, more inclusive, and better for everyone. I wanted anyone with an interest to be able to join the open source party, bring their unique set of skills, and experience the magic firsthand.</p>

<p>For the last 6 years, I have worked as the Community Manager for an open source project called <a href="https://chaoss.community">CHAOSS</a> which focuses on open source community health and sustainability. It has been an unforgettable experience, I’m very proud of what we all accomplished together, and I love that community very much. But as I find my career pivoting back toward PHP, it honestly feels like coming home again.</p>

<h2 id="looking-to-the-future">Looking to the future</h2>

<p>The progress that has been made by the Foundation in the last few years is remarkable! Moving forward, you can expect to see the same kind of commitment to improving the PHP language and to keeping PHP relevant and sustainable.</p>

<p>In addition, we aim to increase the Foundation’s transparency and openness, and to strengthen our collaborative relationships with users, sponsors, contributors, organizations, and the PHP community at large. A solid and thriving PHP ecosystem belongs to and benefits us all, but none of us can make that happen alone.</p>

<h2 id="let%E2%80%99s-chat%21">Let’s chat!</h2>

<p>Because we’re all in this together, I want to spend the next 1-2 months really listening to what you have to say. I have an <a href="https://calendar.app.google/UkqNQzuzYBbEYjLYA">open calendar</a> and I encourage you to reserve some time with me. I want to hear from PHP developers, contributors, companies using PHP, independent consultants, sponsors, community members, and anyone else interested in the future of PHP. I want to hear about your goals, your motivations, your pain points, and yes, even your wacky and unorthodox ideas. And if meetings aren’t your thing, that’s completely understandable. You can also send me an <a href="&#109;&#x61;&#x69;&#108;&#116;&#x6f;&#58;&#101;&#x6c;&#105;&#122;&#x61;b&#101;&#x74;&#x68;&#64;&#x74;&#x68;&#101;&#112;&#x68;&#112;&#46;&#x66;o&#117;&#x6e;&#x64;&#97;&#x74;&#x69;&#111;&#110;">email</a>. (I’ll even check my inbox!)</p>

<p>PHP’s secret recipe has always been its community and I can’t wait to be collaborating with you all again!</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[Welcoming Elizabeth Barron as the New Executive Director of The PHP Foundation]]></title>
            <link href="https://thephp.foundation/blog/2026/02/27/welcoming-elizabeth-barron-new-executive-director/"/>
            <updated>2026-02-27T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2026/02/27/welcoming-elizabeth-barron-new-executive-director/</id>
            <content type="html"><![CDATA[<p>We're excited to welcome <a href="https://www.linkedin.com/in/elizabethn">Elizabeth Barron</a> as the next Executive Director of The PHP Foundation, following a thorough process led by our search committee of <a href="https://www.linkedin.com/in/nilsadermann/">Nils Adermann</a>, <a href="https://www.linkedin.com/in/sebastian-bergmann-phpunit">Sebastian Bergmann</a>, <a href="https://www.linkedin.com/in/lornajane/">Lorna Mitchell</a>, and <a href="https://www.linkedin.com/in/benramsey/">Ben Ramsey</a>.</p>

<p>Elizabeth brings a rare combination of deep roots in the PHP community and proven leadership in open-source governance. She co-founded a volunteer-based nonprofit dedicated to supporting women and non-binary individuals in the PHP industry, served as Community Manager at GitHub where she led developer outreach programs including the Patchwork initiative, and has been active in CHAOSS – a project focused on open-source community health metrics.</p>

<p>Her experience spanning community building, fundraising, outreach operations, and open-source strategy makes her a natural fit to lead the foundation into its next chapter.</p>

<p>As previously announced, founding Executive Director <a href="https://www.linkedin.com/in/pronskiy/">Roman Pronskiy</a> is transitioning to focus on his growing role at <a href="https://www.jetbrains.com/">JetBrains</a>, while continuing to serve on the Board of Directors. Roman will work closely with Elizabeth to ensure a smooth handover.</p>

<p><figure class="max-w-screen-md mx-auto text-center mb-6" id="quote-elizabeth-barron">
    <svg class="w-10 h-10 mx-auto mb-3 text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 18 14">
        <path d="M6 0H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v1a3 3 0 0 1-3 3H2a1 1 0 0 0 0 2h1a5.006 5.006 0 0 0 5-5V2a2 2 0 0 0-2-2Zm10 0h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v1a3 3 0 0 1-3 3h-1a1 1 0 0 0 0 2h1a5.006 5.006 0 0 0 5-5V2a2 2 0 0 0-2-2Z"/>
    </svg>
    <blockquote>
        <p class="italic text-gray-900">“In just a few years, The PHP Foundation has built something remarkable, and I'm honored to take on this role and continue that work. PHP powers a huge part of the web, and I'm excited to work with the Board, our core developers, and the broader PHP community to strengthen and expand the Foundation's impact so that together we can ensure PHP thrives for decades to come.”</p>
    </blockquote>
    <figcaption class="flex items-center justify-center mt-3 space-x-3 rtl:space-x-reverse">
        <img class="w-10 h-10 rounded-full" src="/assets/team/elizabeth_barron.jpeg" alt="profile picture">
        <div class="flex items-center">
            <cite class="pl-0.5 font-medium text-gray-900">Elizabeth Barron, </cite>
            <cite class="pl-1 text-gray-500">Executive Director, The PHP Foundation</cite>
        </div>
    </figcaption>
</figure>
</p>

<p><br>
Please join us in welcoming Elizabeth. We're looking forward to what's ahead.
🐘💜</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[Meet team.blue: A PHP Foundation Sponsor supporting the language at the core of its ecosystem]]></title>
            <link href="https://thephp.foundation/blog/2026/01/26/meet-team-blue-php-foundation-sponsor/"/>
            <updated>2026-01-26T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2026/01/26/meet-team-blue-php-foundation-sponsor/</id>
            <content type="html"><![CDATA[<p>Starting January 2026, <strong>team.blue</strong> joined the PHP Foundation as a <strong>Gold Sponsor</strong>, reinforcing its long-term commitment to supporting the open-source technologies that power millions of businesses across Europe.</p>

<p><a href="https://team.blue/">team.blue</a> is a leading AI-powered digital enabler serving small and medium businesses (SMBs) and agencies across Europe. With more than 4,000 experts, 3.3 million customers, and operations in over 22 countries, team.blue provides businesses with the digital tools they need to build, grow, and scale online. Its ecosystem spans domains, hosting, cloud solutions, website and e-commerce tools, and a fast-growing portfolio of AI-driven SaaS products. For team.blue, PHP represents a foundational technology across its platforms and services.</p>

<h2 id="php%3A-the-engine-behind-team.blue%27s-platforms">PHP: the engine behind team.blue's platforms</h2>

<p>PHP's performance, stability, and extensive ecosystem also provide a scalable basis for delivering AI-powered capabilities and intelligent user journeys, enabling million SMBs to grow and succeed online. PHP underpins:</p>

<ul>
<li><p><strong>Shared hosting and managed WordPress products</strong> at brands like Combell, Register.it, and TransIP.</p></li>
<li><p><strong>PHP-based SaaS products</strong> (core app logic, integrations, and day-to-day feature work).</p></li>
<li><p><strong>Internal tools and systems</strong> used across the group.</p></li>
</ul>

<p>PHP's mature ecosystem and proven scalability allow team.blue to build sophisticated digital tools that help SMBs and agencies grow online, demonstrating how the language powers modern high-traffic platforms across diverse use cases.</p>

<p>Discover more about the team.blue ecosystem: <a href="https://team.blue/our-ecosystem/">https://team.blue/our-ecosystem/</a></p>

<h2 id="giving-back-to-the-php-community">Giving back to the PHP community</h2>

<p><figure class="max-w-screen-md mx-auto text-center mb-6" id="quote-kirk-barlow">
    <svg class="w-10 h-10 mx-auto mb-3 text-gray-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 18 14">
        <path d="M6 0H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v1a3 3 0 0 1-3 3H2a1 1 0 0 0 0 2h1a5.006 5.006 0 0 0 5-5V2a2 2 0 0 0-2-2Zm10 0h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4v1a3 3 0 0 1-3 3h-1a1 1 0 0 0 0 2h1a5.006 5.006 0 0 0 5-5V2a2 2 0 0 0-2-2Z"/>
    </svg>
    <blockquote>
        <p class="italic text-gray-900">“Open-source communities have always been essential to how we build and scale. PHP sits at the core of our hosting and WordPress ecosystem, so we are proud to give back and support the Foundation in ensuring its long-term growth. This sponsorship reinforces our belief that open-source thrives when everyone contributes.”</p>
    </blockquote>
    <figcaption class="flex items-center justify-center mt-3 space-x-3 rtl:space-x-reverse">
        <img class="w-10 h-10 rounded-full" src="/assets/post-images/2026/team-blue/kirk-barlow.png" alt="profile picture">
        <div class="flex items-center">
            <cite class="pl-0.5 font-medium text-gray-900">Kirk Barlow, </cite>
            <cite class="pl-1 text-gray-500">Group Chief Technical Officer, team.blue</cite>
        </div>
    </figcaption>
</figure>
</p>

<p>As a Gold Sponsor, team.blue is putting tangible support behind PHP, helping accelerate progress, maintain strong security, and back the ecosystem globally, while directly supporting the essential work of maintenance, continuous improvement, and ensuring the language remains ready for what comes next.</p>

<p>Learn more about team.blue and its mission to make online business success simpler: <a href="https://team.blue/">https://team.blue/</a></p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[PHP 8.6 kicks off with partial function application]]></title>
            <link href="https://thephp.foundation/blog/2025/12/08/partial-application/"/>
            <updated>2025-12-08T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2025/12/08/partial-application/</id>
            <content type="html"><![CDATA[<p>PHP 8.5 is still warm, but the work to push PHP forward continues.  The latest major feature for PHP 8.6 has just been approved: <a href="https://wiki.php.net/rfc/partial_function_application_v2">Partial Function Application</a> (PFA).</p>

<h2 id="the-gist">The gist</h2>

<p>In PHP 8.6, it will be possible to create a closure that simply delegates to another function without writing out the whole closure.</p>

<pre><code class="php">// This
$underscore = str_replace(' ', '_', ?);

// Is effectively the same as this:
$underscore = fn(string $s): string =&gt; str_replace(' ' , '_', $s);
</code></pre>

<p>Both lines will produce nearly identical opcodes, but the former is much easier to both write and to read, as it doesn't require messing about with redeclaring all the types and variable names.</p>

<p>Any function (or method) call may use one of two placeholders, <code>?</code> or <code>...</code>, to indicate that it is only "partially invoking" that function.  Or "partially applying arguments to it."  It works with both positional and named arguments, too!</p>

<pre><code class="php">function complex(int $a, int $b, int $c, int $d): string { ... }

// This creates a closure that takes 2 ints and returns a string.
$f = complex(?, 2, ?, 4);

// This creates the same closure, but with named arguments.
$f = complex(b: 2, d: 4, ...);

// This reverses the order of the parameters, $f needs $c first, then $a.
$f = complex(b: 2, d: 4, c: ?, a: ?);

// Keep all arguments unbound. Hey look, first-class-callables!
$f = complex(...);

// This creates a zero argument closure, which just calls complex() when invoked!
$f = complex(1, 2, 3, 4, ...);
</code></pre>

<p>PFA supports a wide variety of complex use cases and features, like parameter reordering, named arguments, variadics, etc.  In practice, however, we expect most uses to be reducing a function down to a single remaining argument (that is, currying).  That makes it perfect to use as a callback.  Most of PHP's functions that take callbacks expect a single argument, and the few remaining take two (such as a value and a key).  PFA makes using arbitrarily complex, contextually aware functions in those cases trivially easy.</p>

<pre><code class="php">// This
$result = array_map(in_array(?, $legal, strict: true), $input);

// is much nicer than this
$result = array_map(fn(string $s): bool =&gt; in_array($s, $legal, strict: true), $input);
</code></pre>

<p>By design, it's also the perfect complement for the new <a href="https://www.php.net/manual/en/language.operators.functional.php">pipe operator</a>.  To reuse some examples from the <a href="https://wiki.php.net/rfc/pipe-operator-v3">Pipe RFC</a>:</p>

<pre><code class="php">$numberOfAdmins = getUsers()
    |&gt; array_filter(?, isAdmin(...))
    |&gt; count(...);

$result = "Hello World"
    |&gt; htmlentities(...)
    |&gt; str_split(...)
    |&gt; array_map(strtoupper(...), ?)
    |&gt; array_filter(?, fn($v) =&gt; $v != 'O')
;
</code></pre>

<p>What's more, optimizations around the pipe operator mean the closure doesn't even need to be created in those cases, so there's zero performance overhead.</p>

<p>The RFC has more details on all the ins and outs of the new syntax.</p>

<h2 id="the-long-view">The long view</h2>

<p>If all of this sounds a lot like an extended version of "first class callables," it should.  Or rather, "first class callables," are the training wheels version of partial function application.</p>

<p>PFA was <a href="https://wiki.php.net/rfc/partial_function_application">first proposed</a> way back in 2021, by a team of Joe Watkins, Levi Morrison, Paul Crovella, and myself.  That version was largely similar on the surface, but had a different implementation that caused some consternation.  In particular, Nikita Popov (at the time still PHP's de facto lead developer) felt that it introduced too much complexity in the engine.  His hesitancy convinced many others to reject it at the time, though there was still a lot of interest and support.</p>

<p>There was enough support, however, that Nikita asked "couldn't we just do <code>foo(...)</code> to delay all the variables, and skip the rest of the RFC?"  The result of that was the <a href="https://wiki.php.net/rfc/first_class_callable_syntax">First Class Callables</a> RFC, released in PHP 8.1.</p>

<p>I've been looking to take a second swing at PFA since then, but needed the right time and right collaborators.  FCC has clearly shown itself to be a huge boon to the language, so why not go all the way?  It wasn't until the Pipes RFC passed earlier this year, though, that I was able to snare the PHP Foundation's Arnaud Le Blanc into working on a second version with me.  It didn't quite make it into PHP 8.5 for timing reasons, but it's now available in 8.6.</p>

<p>So what changed?  One, FCC ended up already including a lot of the underlying engine trickery that was needed for this version of PFA.  We were able to leverage that.  For another, the implementation is a bit different.  Rather than creating a special kind of pseudo-closure that can be extra-optimized, the new approach just creates a normal closure object like we've had for years.  That makes it much simpler to implement and solve a ton of edge-case questions.  Three, now we have pipes.</p>

<p>And oh boy is this an exciting combination.</p>

<h2 id="a-long-time-coming">A long time coming</h2>

<p>PFA for PHP really began even before 2021.  As discussed in the <a href="https://thephp.foundation/blog/2025/07/11/php-85-adds-pipe-operator/">Pipes blog post</a> from July, way back in 2016 Sara Golemon proposed porting Hack/HHVM's pipe syntax to PHP:</p>

<pre><code class="php">$result = $arr
    |&gt; array_column($$, 'tags')
    |&gt; array_merge(...$$)
    |&gt; array_unique($$)
    |&gt; array_values($$)
;
</code></pre>

<p>That was never approved, but led us to try splitting the syntax in two: The pipe operator itself, and partial function application instead of <code>$$</code>.  We tried in 2021 to get both, but both failed.  Now we have both.</p>

<p>One of the chief criticisms I've seen about the new pipe operator is the need to wrap up multi-parameter functions into an inline arrow function, and then wrap that in <code>()</code> to keep the parser happy.  Which is a fair criticism!  And the perfect fix for that criticism is... partial function application.  Which we now have.  The twins have been reunited.</p>

<h2 id="php-breaks-the-mold">PHP breaks the mold</h2>

<p>I've often seen PHP criticized for just stealing features from other languages and piling them in willy-nilly.  Frankly that's not always a bad thing: PHP, much like English, evolves by finding good ideas in other languages and <em>ahem</em> borrowing them, and making it our own.</p>

<p>Partial function application is not a new concept.  It's been the foundation of many functional languages for decades.  Haskell, for instance, implicitly uses partial application for literally every function call.  Any function call can just omit its right-most arguments and poof, it becomes a partial application.</p>

<p>What I have not seen in any language, however, is the ability to partially apply arbitrary parameters.  That's important for PHP, because while Haskell's entire standard library was built around the assumption of right-most partial application, PHP's most definitely was not.  We needed to be able to turn arbitrary functions into unary (single-argument) functions to allow most parts of the standard library to work with... pipes.  Or as callbacks.</p>

<p>And now we can.  I do not know of any other language that has as flexible, powerful, and compact a partial function application syntax as PHP 8.6 will have.  Here, PHP would seem to be the innovator.</p>

<p>Rock on, ElePHPants!</p>

<h2 id="what-comes-next%3F">What comes next?</h2>

<p>There's one more major piece of the puzzle still to come: <a href="https://wiki.php.net/rfc/function-composition">Function composition</a>.  Where pipe executes immediately, function composition creates a new function by sticking two functions end-to-end.  Sara Golemon helpfully got it started, but it still needs some work before it can be formally proposed.</p>

<p>That would complete the trifecta of "Functional Features" we've been trying to get into PHP for years to allow a much more natural use of functional techniques.</p>

<p>Each of these RFCs is, on its own, useful but not earth-shattering.  Taken together... "synergy" may be a dirty word outside of management consulting, but in this case it applies.  We are very close to blowing open PHP's functional capabilities in much the way that PHP 5.2 finally blew open its object-oriented capabilities.  And as a multi-paradigm language, we'll be able to freely mix and match OOP and FP approaches where they make the most sense.</p>

<p>I can't wait!</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[Thank you for supporting The PHP Foundation in 2025! Can we count on you in 2026?]]></title>
            <link href="https://thephp.foundation/blog/2025/12/02/can-we-count-on-you-in-2026/"/>
            <updated>2025-12-02T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2025/12/02/can-we-count-on-you-in-2026/</id>
            <content type="html"><![CDATA[<p>As 2025 comes to a close, we at The PHP Foundation want to take a moment to thank everyone who has supported us this year. We firmly believe that our work on the PHP language continues to have a massive impact, and we couldn’t have done it without the amazing PHP community and our generous sponsors.</p>

<div class="text-center my-10">
  <a href="https://thephp.foundation/sponsor/" class="button-link">Become a Sponsor&nbsp;&nbsp;❤️</a>
</div>

<h2 id="%2A%2Aour-achievements-this-year%2A%2A"><strong>Our Achievements This Year</strong></h2>

<p>Now in our fourth year, The PHP Foundation has achieved several milestones that have further strengthened the PHP ecosystem:</p>

<ul>
<li><a href="https://www.php.net/releases/8.5/en.php">Release of PHP 8.5</a></li>
<li><a href="https://github.com/php/pie">PIE 1.0 Release</a></li>
<li><a href="https://thephp.foundation/blog/2025/05/15/frankenphp/">Supporting FrankenPHP</a></li>
<li><a href="https://thephp.foundation/blog/2025/09/05/php-mcp-sdk/">PHP MCP SDK together with Anthropic and Symfony</a></li>
<li>2nd <a href="https://www.sovereign.tech/">Sovereign Tech Agency</a> Investment for the <a href="https://thephp.foundation/blog/2025/10/30/php-streams-evolution/">Stream Layer Rework</a></li>
</ul>

<h2 id="thank-you-to-our-sponsors">Thank You to Our Sponsors</h2>

<p>We owe a special thanks to our major sponsors who make our work possible:</p>

<h3 id="%2A%2Aplatinum%2A%2A"><strong>Platinum</strong></h3>

<p><a href="https://automattic.com/"><strong>Automattic</strong></a><br />
<a href="https://www.sovereign.tech/"><strong>Sovereign Tech Agency</strong></a><br />
<a href="https://www.jetbrains.com/"><strong>JetBrains</strong></a></p>

<h3 id="%2A%2Agold%2A%2A"><strong>Gold</strong></h3>

<p><a href="https://laravel.com/"><strong>Laravel</strong></a><br />
<a href="https://www.godaddy.com/"><strong>GoDaddy</strong></a></p>

<h3 id="%2A%2Asilver%2A%2A"><strong>Silver</strong></h3>

<p><a href="https://www.passbolt.com/"><strong>Passbolt</strong></a> 🆕, <a href="https://packagist.com/"><strong>Private Packagist</strong></a>, <a href="https://craftcms.com/"><strong>Craft CMS</strong></a>, <a href="https://cybozu.co.jp/en/company/"><strong>Cybozu</strong></a>, <a href="https://tideways.com/"><strong>Tideways</strong></a>. <a href="https://www.zend.com/"><strong>Zend by Perforce</strong></a>. <a href="https://symfony.com/"><strong>Symfony Corp</strong></a>, <a href="https://sentry.io/welcome/"><strong>Sentry</strong></a>. <a href="https://manychat.com/"><strong>Manychat</strong></a>, <a href="https://www.mercari.com/"><strong>Mercari Inc.</strong></a>, <a href="http://les-tilleuls.coop/"><strong>Les-Tilleuls.coop</strong></a>, <a href="https://www.pixiv.net/en/"><strong>pixiv Inc.</strong></a>, <a href="https://aternos.gmbh/en/"><strong>Aternos GmbH</strong></a>, <a href="https://chstudio.fr/en/homepage/"><strong>CH Studio</strong></a></p>

<p>In total more than 550 donations were made by businesses and individual sponsors to The PHP Foundation throughout this year through OpenCollective and more through our GitHub sponsors.</p>

<p>Your contributions enable us to support developers, fund crucial projects, and ensure PHP is a modern and reliable choice for web development.</p>

<p>If you are yet to decide on sponsoring the foundation, <a href="https://thephp.foundation/sponsor/">here</a> you can find information on how to join us and why it matters or reach out directly to <a href="&#109;&#x61;i&#108;&#x74;&#111;&#58;&#x63;&#111;&#x6e;&#x74;&#97;&#x63;t&#64;&#x74;&#104;&#101;&#x70;&#104;&#x70;&#x2e;&#102;&#x6f;&#x75;&#110;&#x64;a&#116;&#x69;&#111;&#110;">contact@thephp.foundation</a>.</p>

<h2 id="outlook-into-2026">Outlook into 2026</h2>

<p>Big changes are ahead for 2026, when our founding and long-term executive director <a href="https://www.linkedin.com/in/pronskiy/">Roman Pronskiy</a> (JetBrains) will step down and the foundation will hire a dedicated executive director for the first time.</p>

<p>This marks a new chapter as we recognize that The PHP Foundation has grown so much that we consider a dedicated management position to be required to ensure that our projects and goals are getting done.</p>

<p>If you are interested in the Executive Director role, we are still <a href="https://thephp.foundation/blog/2025/11/10/seeking-new-executive-director/">looking for candidates to apply until December 15th, 2025</a>.</p>

<p>Furthermore, we’d like to add 2 new developers to our team who applied to our program in autumn.</p>

<p>And mainly, our team will continue to maintain, document, and improve PHP further with the next major release (8.6 or 9.0) coming at the end of 2026&#46;</p>

<p>Thank you,<br />
The PHP Foundation<br />
🐘💜</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[The PHP Foundation is Seeking a New Executive Director]]></title>
            <link href="https://thephp.foundation/blog/2025/11/10/seeking-new-executive-director/"/>
            <updated>2025-11-10T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2025/11/10/seeking-new-executive-director/</id>
            <content type="html"><![CDATA[<p>We're opening the search for our next Executive Director, marking an important milestone in the continued growth and evolution of the PHP Foundation.</p>

<p>After four years at the helm of the PHP Foundation, <a href="https://x.com/pronskiy">Roman Pronskiy</a> will conclude his tenure as Executive Director in early 2026. Roman founded and helped build the Foundation from the ground up into a stable, well-run organization, expanded our team of core developers, and deepened collaboration across the PHP ecosystem. As his role at JetBrains grows, Roman has decided to focus his efforts there while continuing to support the PHP Foundation’s next chapter.</p>

<p>We’re immensely grateful for Roman’s vision and leadership, which shaped the foundation’s first years and set a strong course for the future. He will continue serving on the Board of Directors as JetBrains’ representative, providing continuity as JetBrains remains a platinum sponsor and steadfast supporter of PHP. Roman will work closely with the incoming Executive Director to make the transition smooth and complete.</p>

<p>The Board has formed a search committee consisting of two board members Sebastian Bergmann and Nils Adermann as well as two community representatives Lorna Jane Mitchell and Ben Ramsey. The search committee will manage the selection process and find a leader who can build on the Foundation's momentum and guide us through our next phase of growth.</p>

<p><strong>What we're looking for:</strong></p>

<ul>
<li>Strong leadership experience in open source communities</li>
<li>Deep knowledge of the PHP ecosystem</li>
<li>Excellent project management and communication skills</li>
<li>Strategic thinking and a vision for the foundation's future</li>
<li>Experience working with diverse stakeholders and sponsors</li>
</ul>

<p>This is an opportunity to shape the future of one of the world's most widely-used programming languages and support the vibrant community that sustains it.</p>

<p><strong>How you can help:</strong></p>

<p>We need the PHP community's help in finding the right person for this role. If you know someone who would be an excellent Executive Director for the PHP Foundation, please encourage them to apply or reach out to us directly.</p>

<p>The full job description and application details can be found below.</p>

<p>For questions about the search process, please contact <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x65;&#x64;&#x2d;&#x73;&#x65;&#x61;&#x72;&#99;&#104;&#64;&#116;&#104;&#101;&#112;&#104;&#112;&#46;&#102;&#111;&#117;&#110;&#100;&#97;tio&#x6e;">ed-search@thephp.foundation</a>.</p>

<p>🐘💜</p>

<h1 id="executive-director-%E2%80%93-the-php-foundation">Executive Director – The PHP Foundation</h1>

<p><strong>Position Type:</strong> Full-time or Part-time (if part-time, responsibility includes hiring necessary staff to fulfill the complete role)<br />
<strong>Location:</strong> Remote, no visa opportunity<br />
<strong>Reports To:</strong> Board of Directors<br />
<strong>Term:</strong> 1 year, renewable subject to annual performance evaluation<br />
<strong>Compensation:</strong> Total Compensation $90,000-$160,000 (Base: $90,000 - $105,000 USD / year, Performance based bonus up to $65,000 USD)</p>

<h2 id="about-the-php-foundation">About The PHP Foundation</h2>

<p>PHP is one of the world's most widely-used programming languages, powering millions of websites and applications. The PHP Foundation is a collective of people and organizations relying on the PHP language. Its mission is to ensure the long-term prosperity of the PHP language.</p>

<p>The PHP Foundation focuses on providing financial support and guidance to PHP language developers to support its goals of improving the language for its users, providing high-quality maintenance, and improving the PHP language project to retain current contributors and to integrate new contributors.</p>

<p>The PHP Foundation aims to promote the public image of the PHP language in the interest of retaining existing and gaining new users and contributors.</p>

<p>The PHP Foundation operates as a collective under the Open Source Collective, a 501(c)(6) non-profit organization based in the United States. The Executive Director role will be structured as a contractor position with this entity.</p>

<h2 id="the-role">The Role</h2>

<p>The Executive Director serves as the operational leader of the PHP Foundation, defining its strategic vision and translating it into reality while managing day-to-day operations and serving as the primary bridge between the Board, staff, community, and sponsors.</p>

<p>While the programming language PHP is over 30 years old, the PHP Foundation was only created in 2021. The Executive Director will be responsible for maturing the foundation’s internal structure and will play a crucial role in ensuring the foundation can effectively support this vital ecosystem.</p>

<h2 id="key-responsibilities">Key Responsibilities</h2>

<h3 id="strategic-leadership">Strategic Leadership</h3>

<ul>
<li>Develop strategic initiatives for the PHP Foundation and the PHP language in alignment with the foundation's mission and goals</li>
<li>Annual presentation of new strategy and evaluation of previous year’s performance to the Board for approval</li>
<li>Develop and implement marketing strategies to fulfill the foundation’s mission to promote the public image of the PHP language</li>
</ul>

<h3 id="fundraising-%26-financial-oversight">Fundraising &amp; Financial Oversight</h3>

<ul>
<li>Responsible for fundraising to provide the budget for implementing proposed strategy</li>
<li>Manage finances, budgets and fundraising</li>
<li>Prepare quarterly operations summaries and financial statements</li>
</ul>

<h3 id="operational-management">Operational Management</h3>

<ul>
<li>Manage day-to-day operations, staff, including contracted PHP core developers</li>
<li>Oversee hiring, performance management, and development of Foundation staff</li>
<li>Ensure efficient execution of foundation programs and initiatives</li>
<li>Provide regular updates at board meetings</li>
</ul>

<h3 id="stakeholder-relations">Stakeholder Relations</h3>

<ul>
<li>Represent the foundation externally and maintain relationships with sponsors, partners, and community stakeholders</li>
<li>Serve as the public face of the foundation at conferences and community events</li>
</ul>

<h2 id="required-qualifications">Required Qualifications</h2>

<ul>
<li>Demonstrated leadership experience in relevant organizations or communities</li>
<li>Strong project management and organizational skills</li>
<li>Excellent written and verbal communication skills</li>
<li>Financial management and budgeting experience</li>
<li>Proven ability to work with diverse stakeholders and build consensus</li>
</ul>

<h2 id="additional-experience-we-value">Additional Experience We Value</h2>

<ul>
<li>Experience in free and open source software communities</li>
<li>Knowledge of the PHP ecosystem and its community dynamics</li>
<li>Experience in fundraising or sponsor relations</li>
<li>Network within the PHP community</li>
<li>Experience managing remote teams</li>
<li>Public speaking and presentation skills</li>
<li>Previous experience in open source foundation governance</li>
<li>Experience in or working with public relations or marketing</li>
</ul>

<h2 id="compensation-and-terms">Compensation and Terms</h2>

<ul>
<li>Contracting position with Open Source Collective 501(c)(6)</li>
<li>Fully remote, no visa opportunities</li>
<li>At full-time, base pay of $90,000 - $105,000 / year, invoiced monthly</li>
<li>Annual performance based bonus up to $65,000 tied especially to fundraising goals</li>
<li>Travel to a few community events per year required with expenses covered, additional travel encouraged if event organizers cover expenses</li>
<li>Renewable annually based on performance and mutual agreement with Board of Directors</li>
</ul>

<h2 id="selection-process">Selection Process</h2>

<p>A search committee of Board members and community representatives is managing the candidate search and evaluation process. The process includes:</p>

<ol>
<li>Application review and initial screening by the search committee</li>
<li>Interviews with the search committee</li>
<li>Committee presents top candidates to the full Board of Directors</li>
<li>Presentation of vision and strategy to the full Board</li>
<li>Final selection by full Board vote (2/3 majority required)</li>
</ol>

<p>Applications will be accepted on a rolling basis until 2025-12-15.</p>

<h2 id="how-to-apply">How to Apply</h2>

<p>Please fill in our <a href="https://docs.google.com/forms/d/1V-OHLizny6ob8BivWJv7KneHToPyRKE6Whdmnn_hl3M/edit"><strong>Google form</strong></a> including:</p>

<ul>
<li>Cover letter describing your interest and relevant experience</li>
<li>Resume/CV</li>
<li>Brief vision statement (500-1000 words) addressing: your understanding of the foundation's current position, key opportunities and challenges you see for the foundation, and your approach to the role</li>
<li>During the interview process we will ask you to provide at least 3 references who we can contact</li>
</ul>

<p>Questions about the position or application process? Contact: <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#x6f;&#x3a;&#x65;&#x64;&#x2d;&#x73;&#x65;&#x61;&#x72;&#99;&#104;&#64;&#116;&#104;&#101;&#112;&#104;&#112;&#46;&#102;&#111;&#117;&#110;&#100;&#97;tio&#x6e;">ed-search@thephp.foundation</a>.</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[Design Contest Results and Lessons Learned]]></title>
            <link href="https://thephp.foundation/blog/2025/11/05/design-contest-results/"/>
            <updated>2025-11-05T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2025/11/05/design-contest-results/</id>
            <content type="html"><![CDATA[<p>Over the last few weeks we ran a focused community contest to refresh the <strong>PHP 8.5 release page</strong>. Thank you to everyone who submitted, reviewed, voted, and discussed.</p>

<blockquote>
  <p><strong>Note about future redesigns</strong><br />
  This contest was an experiment for a single release page. We might <strong>not</strong> use the same approach for a broader homepage redesign. If we did run a contest again, we would separate tracks (on-brand update vs blue-sky concept), use a dedicated voting tool or randomized ordering, keep log-damped voting, and set a 50/50 jury/community split with clearer criteria and a small shortlist honorarium.</p>
</blockquote>

<h2 id="%2A%2Aresults%2A%2A"><strong>Results</strong></h2>

<h3 id="%2A%2Awinner%3A%2A%2A-%2A%2Anuno-guerra-%40nunowar%2A%2A-%E2%80%93-%2Aphp-is-awesome-%F0%9F%94%A5%2A"><strong>Winner:</strong> <strong>Nuno Guerra <a href="https://github.com/nunowar">@nunowar</a></strong> – <a href="https://github.com/php/web-php/issues/1539"><em>PHP is Awesome 🔥</em></a></h3>

<p><a href="https://nunoguerra.com/dev/php/" target="_blank" rel="noopener noreferrer"><img src="/assets/post-images/2025/design-contest/nunowar.png" class="shadow-md rounded-lg"/></a></p>

<p><strong>Prizes:</strong> <strong>$1,000  + AI Ultimate License from <a href="https://www.jetbrains.com/phpstorm/">JetBrains</a></strong>·+ <strong>$1,000 from <a href="https://getrector.com/">Rector</a></strong></p>

<p>At JetBrains, we decided to support other contestants with gifts as well.</p>

<h3 id="%2A%2Arunner-up%3A-hanna-stelmakh-%40hastelmakh%2A%2A-%E2%80%93-%2Aphp-8.5-release-page-design-contest-submission%2A"><strong>Runner-up: Hanna Stelmakh <a href="https://github.com/hastelmakh">@hastelmakh</a></strong> – <a href="https://github.com/php/web-php/issues/1534"><em>PHP 8.5 Release Page Design Contest Submission</em></a></h3>

<p><a href="https://www.figma.com/proto/82kDxx1bh6ngC8Pv2Z2jUW/PHP-Release-8.5?page-id=0%3A1\&node-id=449-2387\&viewport=-7617%2C246%2C0.13\&t=f2P7pJOdSAEOKLDY-1" target="_blank" rel="noopener noreferrer"><img src="/assets/post-images/2025/design-contest/hastelmakh.png" class="shadow-md rounded-lg"/></a></p>

<p><strong>Prize:</strong> <strong>$500 + AI Ultimate License from <a href="https://www.jetbrains.com/phpstorm/">JetBrains</a></strong></p>

<h3 id="%2A%2Ashortlist%3A%2A%2A"><strong>Shortlist:</strong></h3>

<p><a href="https://github.com/ben-joostens">@ben-joostens</a><strong>,</strong> <a href="https://github.com/tao">@tao</a>, <a href="https://github.com/lumnn">@lumnn</a>, <a href="https://github.com/thiagoolivier">@thiagoolivier</a>, <a href="https://github.com/mcpad2025-crypto">@mcpad2025-crypto</a>, <a href="https://github.com/minlivalievs-eng">@minlivalievs-eng</a>, <a href="https://github.com/giodi">@giodi</a>, <a href="https://github.com/everlastedSE">@everlastedSE</a>, <a href="https://github.com/asterd">@asterd</a>, <a href="https://github.com/ad-1984">@ad-1984</a>, <a href="https://github.com/Ayesh">@Ayesh</a>, <a href="https://github.com/StillMoe">@StillMoe</a>, <a href="https://github.com/KarinCheng">@KarinCheng</a>, <a href="https://github.com/christian-acceseo">@christian-acceseo</a></p>

<p><strong>Shortlist thank-you:</strong> <a href="https://www.jetbrains.com/phpstorm/"><strong>PhpStorm</strong></a> <strong>/ <a href="https://www.jetbrains.com/ai-ides/buy/">AI Ultimate License</a> from JetBrains</strong> for all shortlisted participants.</p>

<h2 id="%2A%2Aa-little-fun-along-the-way%2A%2A-"><strong>A little fun along the way</strong> <img style="display:inline;" width="40" src="https://ftp.ntu.edu.tw/php/images/ele-running.gif"/></h2>

<p>Of course, no PHP contest would be complete without a bit of humor. Among all the serious submissions, one playful entry <a href="https://x.com/jon_bossenger/status/1983140310826795201">from X/Twitter</a> stood out:</p>

<p><a href="https://php-85-hyperactive.vercel.app/" target="_blank" rel="noopener noreferrer"><img src="/assets/post-images/2025/design-contest/php-85-hyperactive.png" class="shadow-md rounded-lg"/></a></p>

<p>It didn’t quite meet the “accessible and lightweight” brief, but it earned an honorary mention for spirit and commitment to vintage web aesthetics.</p>

<h2 id="%2A%2Anext-steps%2A%2A"><strong>Next steps</strong></h2>

<p>We will collaborate with Nuno Guerra to polish the winning design and may incorporate ideas from other entries where they improve clarity or accessibility. And finally we’ll adapt it to <a href="https://php.net">php.net</a>’s stack.</p>

<p>In the spirit of PHP, contributions are welcome! We encourage all participants to join the <a href="https://github.com/php/web-php/issues/1592"><strong>implementation thread</strong></a> and help refine the final page.</p>

<h2 id="%2A%2Ahow-the-scoring-worked%2A%2A"><strong>How the scoring worked</strong></h2>

<p>We combined a jury score with a community vote and <strong>used a logarithmic transform</strong> to reduce social-media spikes. We counted <strong>👍 during the voting window</strong> for each shortlisted entry and <strong>ignored 👎</strong> and other reactions.</p>

<ul>
<li><p><strong>Jury (40%)</strong><br />
Judges scored four criteria from 0 to 5. For each entry we averaged judges into <code>J</code> in the range 0–25.<br />
Normalization: <code>J_norm = J / 25</code>.</p></li>
<li><p><strong>Community vote (60%), log-damped</strong><br />
For entry <em>i</em> with <code>V_i</code> upvotes and <code>T = Σ V_i</code> across the shortlist:<br />
<code>V′_i = log(1 + V_i)</code> and <code>V_logshare = V′_i / Σ V′_k</code>.</p></li>
<li><p><strong>Final score</strong><br />
Final <code>= 0.4 × J_norm + 0.6 × V_logshare</code></p></li>
</ul>

<p>We will publish the full table with anonymized jury subtotals and final scores.</p>

<h2 id="%2A%2Alessons-learned%2A%2A"><strong>Lessons learned</strong></h2>

<p>We might not run this contest format again. <strong>But if we did, here’s what we would fix:</strong></p>

<h3 id="%2A%2A1-scope-%26-brief%3A-on-brand-update-vs-full-rework%2A%2A"><strong>1) Scope &amp; brief: on-brand update vs full rework</strong></h3>

<p>The scope was the <strong>PHP 8.5 release page</strong> with an <strong>on-brand</strong> constraint. Some entries explored broader rebrands.</p>

<p><strong>Next time we would</strong></p>

<ul>
<li>Be more explicit on on-brand requirement.</li>
<li><p>Potentially Split into <strong>two tracks</strong> judged and presented <strong>separately</strong>:</p>

<ul>
<li><strong>Track A:</strong> on-brand update of the specific page.<br />
<strong>Track B:</strong> blue-sky concept for future reference.</li>
</ul></li>
</ul>

<h3 id="%2A%2A2-%E2%80%9Cspec-work%E2%80%9D-concerns%2A%2A"><strong>2) “Spec work” concerns</strong></h3>

<p>We kept scope small, didn’t require code, and recognized more than one entry (runner-up and shortlist thanks).</p>

<p><strong>Next time we would:</strong></p>

<ul>
<li>Prepare a more detailed brief with the community.</li>
<li>Offer a <strong>paid shortlist honorarium</strong>.</li>
<li>Cap deliverables (mock-ups plus optional tiny HTML/CSS), no heavy code.</li>
</ul>

<h3 id="%2A%2A3-voting-%26-balance-order-bias%2C-social-reach%2C-weights%2A%2A"><strong>3) Voting &amp; balance (order bias, social reach, weights)</strong></h3>

<p>Order bias and social amplification are real. In this contest we <strong>ignored downvotes</strong> and <strong>used log damping</strong> on upvotes.</p>

<p><strong>Next time we would also:</strong></p>

<ul>
<li>Use a dedicated voting tool that shuffles candidates.</li>
<li>Optionally hide aggregate reaction counts until voting closes.</li>
<li>Set a 50/50 split between jury and community.</li>
<li>Publish the full calculation sheet upfront for auditability.</li>
</ul>

<h2 id="%2A%2Athank-you%2A%2A"><strong>Thank you</strong></h2>

<p>Thanks to all participants, voters, reviewers, and to the jury and design advisors for careful evaluations. Special thanks to <a href="https://www.jetbrains.com/"><strong>JetBrains</strong></a> and <a href="https://getrector.com/"><strong>Rector</strong></a> for supporting the community with prizes and encouragement.</p>

<p>If you want to follow implementation, join the thread here: <a href="https://github.com/php/web-php/issues/1592"><strong>php/web-php/issues/1592</strong></a>.</p>

<p>🐘💜</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[Evolving PHP Streams for Async, Security, and Performance]]></title>
            <link href="https://thephp.foundation/blog/2025/10/30/php-streams-evolution/"/>
            <updated>2025-10-30T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2025/10/30/php-streams-evolution/</id>
            <content type="html"><![CDATA[<p>Thanks to investment from the <strong><a href="https://www.sovereign.tech/">Sovereign Tech Agency (STA)</a></strong>, a German government backed organization supporting open-source infrastructure, the PHP Foundation is modernizing one of PHP’s oldest and most critical subsystems: Streams.</p>

<p>This post outlines the planned work and explains why these changes matter for the PHP ecosystem.</p>

<h2 id="what-are-php-streams%3F">What Are PHP Streams?</h2>

<p>Before diving into the improvements, let’s briefly revisit what Streams are and why they matter.</p>

<p>Introduced around 2001, PHP streams provide a unified way to handle file and network I/O, allowing data from different sources such as files, sockets, or memory to be accessed through a consistent API using the same set of functions.</p>

<p>Over time, PHP streams have proven to be a powerful and flexible subsystem, but some parts of the implementation have not evolved alongside modern use cases, performance expectations, and system capabilities. This project aims to make Streams faster, safer, and easier to extend for modern PHP applications.</p>

<p>The actual scope is divided into four subsections.</p>

<h2 id="performance-and-stability-improvements">Performance and Stability improvements</h2>

<p>This part aims to improve performance and consistency in how PHP Streams copying and seeking.</p>

<p>There is still room to improve performance in stream copying.</p>

<p>For example, copying large files or handling network transfers can be made faster through asynchronous I/O mechanisms like io_uring on Linux. At the same time, we need to prevent potential crashes caused by memory-mapped files. The goal is to phase out mmap usage and introduce a new copying API as part of the upcoming I/O API, using io_uring or other system features where available.</p>

<p>Seeking is currently problematic for filtered streams, which causes various inconsistencies. Developers working with filters often encounter limitations when rewinding or skipping data.</p>

<p>The plan is to introduce a new seeking filter API that will allow seeking in streams where possible and disallow it where not. For example, seeking to the beginning should always be possible, but not all filters support seeking to arbitrary positions. Some may allow it, so a new internal API is needed.</p>

<h2 id="error-handling-and-monitoring-enhancements">Error Handling and Monitoring Enhancements</h2>

<p>This part is mainly about the introduction of new error reporting mechanisms for streams as well as the introduction of more hooks. Currently, many low-level I/O errors are surfaced inconsistently to user space. The goal is to standardize how Streams report errors and make them easier to debug.</p>

<p>The primary idea for error reporting is to have a better way to handle errors so they can be collected and reported to user space. We’ll wrap existing errors and provide richer context options for developers.</p>

<p>In terms of hooks, this would be useful for async code and could be done through a special polling wrapper. There should be some way to allow replacing some blocking operations (specifically for file IO). This is primarily meant as an internal change, but it will also be considered to possibly expose some hooks to user space if convenient and acceptable from a performance point of view.</p>

<h2 id="networking-and-socket-improvements">Networking and Socket Improvements</h2>

<p>This part is mainly about the introduction of a new polling API, improvements in the stream_select function, and resolving issues in socket handling.</p>

<p>Modern network applications rely heavily on scalable event handling. The new polling API will introduce modern mechanisms such as epoll and kqueue, enabling PHP to handle multiple I/O streams more efficiently.</p>

<p>Currently, only select is available for user space, which has known performance and scaling issues. This modernization will benefit frameworks and extensions that implement async networking or event-driven I/O.</p>

<p>The purpose of the API is primarily to build an internal API that can be used internally for various tasks in the PHP core and as a base (fallback) for the future async IO API.</p>

<p>The stream_select usage should be extended to better handle polling of filtered streams and provide an API for external objects that can provide extra data, as will be possible in the new polling API. This will require some refactoring and potentially sharing some of the logic with the new polling API.</p>

<p>Additionally, several socket-specific improvements are planned. New socket context options will be added to provide better configuration capabilities. Various socket handling issues will be addressed, and utilities for working with file descriptors will be improved.</p>

<h2 id="security-and-tls-enhancements">Security and TLS Enhancements</h2>

<p>Another important part of this work targets the OpenSSL extension, which handles encrypted streams.</p>

<p>Specifically, refactoring its async handling that is currently not well implemented and has various limitations. The refactoring will clarify what polling action is required for user space. For example, whether the stream needs to wait for reading or writing.</p>

<p>In addition, we aim to improve TLS 1.3 support with options to select cipher suites and integrate TLS Sessions, PSK (Pre-Shared Key) and early data (0-RTT) support.</p>

<p>To enable these changes, a new TLS 1.3 PHP testing library is being developed. It will allow customizing the protocol flow and testing TLS 1.3 features, including asynchronous behavior.</p>

<h2 id="next-steps">Next Steps</h2>

<p>Together, these efforts will modernize and strengthen PHP’s I/O layer for the next decade of web and CLI development.</p>

<p>Work has started in 2025 and will go through 2026. Incremental progress will be shared publicly through PHP Foundation updates and PHP internals discussions, and RFCs.</p>

<p>We’re grateful to the Sovereign Tech Agency for supporting this foundational investment in PHP’s core. Stay tuned for technical write-ups and benchmarks as the implementation progresses.</p>
]]></content>
        </entry>
            <entry>
            <title type="html"><![CDATA[PHP’s New URI Extension: An Open Source Success Story]]></title>
            <link href="https://thephp.foundation/blog/2025/10/10/php-85-uri-extension/"/>
            <updated>2025-10-10T00:00:00+00:00</updated>
            <id>https://thephp.foundation/blog/2025/10/10/php-85-uri-extension/</id>
            <content type="html"><![CDATA[<p>URLs are a fundamental building block of the Web we rely on every day.</p>

<p>Their familiarity makes them appear deceptively simple: Seemingly clearly
delineated components like scheme, hostname, path, and some others suggest that
it’s trivial to extract information from a URL. In reality, there are thousands
of custom parsers built over the years, each with their own take on details.</p>

<p>For us web developers, there are two main standards specifying how URLs are
supposed to work. <a href="https://datatracker.ietf.org/doc/html/rfc3986">RFC 3986</a>,
which is the original URI standard from 2005; and the <a href="https://url.spec.whatwg.org/">WHATWG URL Living
Standard</a>, which is followed by web browsers.
Because things are not as simple as they appear at first glance, these two
commonly used standards are incompatible with each other&#33; Mixing and matching
different standards and their parsers, especially when they do not <em>exactly</em>
follow the standard, is something that <a href="https://daniel.haxx.se/blog/2022/01/10/dont-mix-url-parsers/">commonly leads to security
issues</a>.</p>

<h2 id="why-change-was-needed">Why Change Was Needed</h2>

<p>Despite the importance of correctly parsing URLs, PHP did not include any
standards-compliant parser within the standard library for the longest time.
There is the
<a href="https://www.php.net/manual/en/function.parse-url.php"><code>parse_url()</code></a> function,
which has existed since PHP 4, but it does not follow any standard and is
explicitly documented not to be used with untrusted or malformed URLs.
Nevertheless, it is commonly used for lack of a better alternative that is
readily available and also because it appears to work correctly for a majority
of well-formed inputs that developers encounter in day-to-day work. This can
mislead developers to believe that the security issues of <code>parse_url()</code> are a
purely theoretical problem rather than something that <em>will</em> cause issues
sooner or later.</p>

<p>As an example, the input URL <code>example.com/example/:8080/foo</code> is a valid URL
consisting of only a relative path according to RFC 3986&#46; It is invalid
according to the WHATWG URL standard when not resolved against a base URL.
However, according to <code>parse_url()</code> it is a URL for the host <code>example.com</code>,
port 8080 and path <code>/example/:8080/foo</code>, thus including the 8080 in <em>two</em> of
the resulting components:</p>

<pre><code class="php">&lt;?php

var_dump(parse_url('example.com/example/:8080/foo'));

/*
array(3) {
  ["host"]=&gt; string(11) "example.com"
  ["port"]=&gt; int(8080)
  ["path"]=&gt; string(18) "/example/:8080/foo"
}
*/
</code></pre>

<h2 id="introducing-a-new-api">Introducing a New API</h2>

<p>This changes with PHP 8.5. Going forward, PHP will include standards-compliant
parsers for both RFC 3986 and the WHATWG URL standard as an <em>always-available</em>
part of its standard library within a new “URI” extension. Not only will this
enable easy, correct, and secure parsing of URLs according to the respective
standard, but the URI extension also includes functionality to modify
individual components of a URL.</p>

<pre><code class="php">&lt;?php

use Uri\Rfc3986\Uri;

$url = new Uri('HTTPS://thephp.foundation:443/sp%6Fnsor/');

$defaultPortForScheme = match ($url-&gt;getScheme()) {
    'http' =&gt; 80,
    'https' =&gt; 443,
    'ssh' =&gt; 22,
    default =&gt; null,
};

// Remove default ports from URLs.
if ($url-&gt;getPort() === $defaultPortForScheme) {
    $url = $url-&gt;withPort(null);
}

// Getters normalize the URL by default. The `Raw`
// variants return the input unchanged.

echo $url-&gt;toString(), PHP_EOL;
// Prints: https://thephp.foundation/sponsor/
echo $url-&gt;toRawString(), PHP_EOL;
// Prints: HTTPS://thephp.foundation/sp%6Fnsor/
</code></pre>

<h2 id="thoughtfully-built-to-last">Thoughtfully Built to Last</h2>

<p>In this post we not only want to showcase the functionality but also tell you
the story of how this project developed and how work gets done in PHP to keep
the language modern and a great choice for web development. There is often more
work behind new PHP features than meets the eye. We hope to provide some
insight into why we prefer doing things right rather than fast.</p>

<p><a href="https://github.com/kocsismate">Máté Kocsis</a> from The PHP Foundation’s dev team
initially started discussion for his <a href="https://wiki.php.net/rfc/url_parsing_api">RFC of a new URL parsing
API</a> in June 2024&#46; Given PHP’s
strong backwards compatibility promise, the new API needed to get things right
on the first attempt in order to serve the PHP community well for the decade to
come without introducing disruptive changes. Thus, over the course of <em>almost
one year</em>, <a href="https://news-web.php.net/php.internals/123997">more than 150 emails on the PHP Internals
list</a> were sent. Additionally,
several off-list discussions in various chat rooms have been had. Throughout
this process, various experts from the PHP community continuously refined the
RFC. They discussed even seemingly insignificant details, to provide not just a
standards-compliant implementation, but also a clean and robust API that will
guide developers towards the right solution for their use case. We also planned
ahead and made sure that the new URI extension with its dedicated <code>Uri</code>
namespace provides a clear path forward to add additional URI/URL-related
functionality in future versions of PHP.</p>

<p>The RFC ultimately went to vote in May 2025 and was accepted with a 30:1 vote.
But work didn’t stop there: The proposed API also had to be implemented and
reviewed. Instead of building a PHP-specific solution, Máté opted to stand on
the shoulders of giants and selected two libraries to perform the heavy
lifting. The <a href="https://uriparser.github.io/">uriparser library</a> provides the RFC
3986 parser, and the <a href="https://lexbor.com/">Lexbor library</a>, which is already
used by PHP 8.4’s new DOM API, provides the WHATWG parser.</p>

<h2 id="open-source-collaboration">Open Source Collaboration</h2>

<p>As part of the integration, Máté and The PHP Foundation worked together with
the upstream maintainers to include missing functionality in the respective
libraries. As an example, neither library included functionality to cheaply
duplicate the internal data structures, which was necessary to support cloning
the readonly PHP objects representing the parsed URL when attempting to modify
individual components with the so-called with-er methods (e.g.,
<code>-&gt;withPort(8080)</code>). The uriparser library also did not include any functions
for modifying components of a parsed URL. All this functionality is now
available in the upstream libraries for everyone to use and benefit from.</p>

<p>The review and testing of Máté’s PHP implementation was carried out by PHP
community contributors <a href="https://github.com/nielsdos/">Niels Dossche</a> and
<a href="https://github.com/nyamsprod/">Ignace Nyamagana Butera</a>. This included
reviewing and testing the new functionality that had been added to the two
upstream libraries. <a href="https://thephp.foundation/#sponsors_silver">Tideways, a founding member and Silver
sponsor</a> of The PHP Foundation,
also sponsored engineering time; their contribution came in the form of <a href="https://github.com/TimWolla/">Tim
Düsterhus</a>. During the review and testing, these
reviewers discovered several pre-existing bugs in the upstream libraries. They
submitted fixes to the upstream maintainers, <a href="https://github.com/hartwork">Sebastian
Pipping</a> (uriparser) and <a href="https://github.com/lexborisov">Alexander
Borisov</a> (Lexbor), who quickly reviewed and
applied them.</p>

<h2 id="test-it-now">Test It Now</h2>

<p>This work paid off, and PHP’s new URI extension with not just one but two
feature-rich and standards-compliant URI implementations is fully available for
testing with PHP 8.5 RC 1&#46;</p>

<p>If you'd like to see further improvements to PHP’s standard library please
consider <a href="https://thephp.foundation/sponsor/">sponsoring The PHP Foundation</a>.</p>
]]></content>
        </entry>
    </feed>