<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>PHP Reads</title>
        <link>https://phpreads.com/</link>
        <description>Excellent PHP writing, hand-picked. No buzzwords. No ads. No nonsense.</description>
        <language>en-us</language>
        <atom:link href="https://phpreads.com/feed" rel="self" type="application/rss+xml" />
        <item>
            <title>Prepared statements under the hood</title>
            <link>https://blog.ulf-wendel.de/2008/pdo_mysqlnd-prepared-statements-again/</link>
            <guid>https://blog.ulf-wendel.de/2008/pdo_mysqlnd-prepared-statements-again/</guid>
            <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[A classic deep dive into how PDO and mysqlnd handle prepared statements. Although written in 2008, it remains a fundamental resource for understanding the nuances of database interactions in PHP and why certain configuration choices matter.

Picked by Stefan Priebsch – "Ulf Wendel was deeply familiar with the PHP database stack at the time. This shows in the level of detail with which he explains the performance impact of prepared statements."]]></description>
        </item>
        <item>
            <title>Do not use PHP references</title>
            <link>https://schlueters.de/blog/archives/125-Do-not-use-PHP-references.html</link>
            <guid>https://schlueters.de/blog/archives/125-Do-not-use-PHP-references.html</guid>
            <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Johannes Schlüter explains why PHP references are often misunderstood and misused. This post is a timeless reminder that references in PHP are not pointers and can often lead to unexpected behavior and performance issues.

Picked by Sebastian Bergmann – "Written by former PHP core contributor and release manager Johannes Schlüter, this article helps us understand how the language works under the hood."]]></description>
        </item>
        <item>
            <title>When AI finds zero-days faster than humans can fix them</title>
            <link>https://blog.mozilla.org/en/privacy-security/ai-security-zero-day-vulnerabilities/</link>
            <guid>https://blog.mozilla.org/en/privacy-security/ai-security-zero-day-vulnerabilities/</guid>
            <pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[It seems that AI finds previously undiscovered security vulnerabilities so quickly that the only realistic response is to counter it with AI as well. If that is true, then a new arms race has just begun.

Picked by Stefan Priebsch and Sebastian Bergmann – "Open Source maintainers may struggle to keep up without burning out. We need to start talking about this now."]]></description>
        </item>
        <item>
            <title>Composer 2.9.6 fixes critical vulnerability</title>
            <link>https://blog.packagist.com/composer-2-9-6-perforce-driver-command-injection-vulnerabilities/</link>
            <guid>https://blog.packagist.com/composer-2-9-6-perforce-driver-command-injection-vulnerabilities/</guid>
            <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Composer 2.9.6 and Composer 2.2.27 LTS fix two command injection vulnerabilities in the Perforce VCS driver. The issue can affect users even if they do not actively use Perforce, so upgrading immediately is strongly recommended.

Picked by Sebastian Bergmann and Stefan Priebsch – "An important reminder that supply-chain tooling deserves the same security attention as application code."]]></description>
        </item>
        <item>
            <title>Streams in PHP: What you really need to know</title>
            <link>https://dev.to/gabrieloliverio/streams-in-php-55kb</link>
            <guid>https://dev.to/gabrieloliverio/streams-in-php-55kb</guid>
            <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[A practical deep dive into PHP streams: what they are, how resources and wrappers fit together, and how stream-related functions behave in real-world use. A good refresher on one of PHP’s most fundamental abstractions, quietly powering everyday code for years.

Picked by Sebastian Bergmann – "A well-written explanation of a fundamental PHP concept that many developers use every day without fully understanding it."]]></description>
        </item>
        <item>
            <title>Web socket servers with PHP</title>
            <link>https://accesto.com/blog/long-running-php-websocket-server/</link>
            <guid>https://accesto.com/blog/long-running-php-websocket-server/</guid>
            <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[The article explains how a single long-running process handles real-time event delivery, tenant-aware routing, graceful shutdown, and stable memory usage without polling or unnecessary complexity.

Picked by Stefan Priebsch – "A strong real-world example of how PHP can power long-running, event-driven systems in production when the architecture is thoughtfully designed."]]></description>
        </item>
        <item>
            <title>Dependency hygiene, one week later</title>
            <link>https://stitcher.io/blog/dependency-hygiene</link>
            <guid>https://stitcher.io/blog/dependency-hygiene</guid>
            <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[It is unusual for us to feature the same article twice. This one earned it because it was updated, sharpening the author's original point. It now provides a more nuanced explanation around the ext/sodium polyfill, sparked by discussions on social media.

Picked by Sebastian Bergmann and Stefan Priebsch – "We are glad to see this article growing into a broader community discussion. We like to think that PHP Reads played some role in moving this conversation forward."]]></description>
        </item>
        <item>
            <title>A classic on async that still explains today's trade-offs</title>
            <link>https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/</link>
            <guid>https://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/</guid>
            <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[“What Color is Your Function?” is more than a famous metaphor. The article shows how asynchronous code shapes API design, composition, control flow, and error handling all at once. Even though the post dates back to 2015, its core insight remains highly relevant to today's discussion about async in PHP.

Picked by Stefan Priebsch – "This is still one of the clearest explanations of why async is not just a language feature, but a design constraint."]]></description>
        </item>
        <item>
            <title>OPcache tuning that pays off in production</title>
            <link>https://tideways.com/profiler/blog/fine-tune-your-opcache-configuration-to-avoid-caching-suprises</link>
            <guid>https://tideways.com/profiler/blog/fine-tune-your-opcache-configuration-to-avoid-caching-suprises</guid>
            <pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Benjamin Eberlei explains how to unlock one of PHP's most effective performance levers without touching application code or redesigning the architecture: OPcache configuration. The result is a piece that is deeply technical, highly practical, and immediately useful.

Picked by Sebastian Bergmann – "Benjamin consistently delivers practical performance guidance. This one is a strong example that is valuable well beyond the usual checklist advice."]]></description>
        </item>
        <item>
            <title>Building step debugging without an extension</title>
            <link>https://ddless.com/blog/technical-journey-building-php-debugger</link>
            <guid>https://ddless.com/blog/technical-journey-building-php-debugger</guid>
            <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[This article tells the story behind DDLess, a promising new debugging tool for PHP. What makes it especially interesting is the technical direction: instead of relying on engine-level integration, it instruments userland code at runtime. That opens up a different path for step debugging that is less dependent on PHP's internals.

Picked by Stefan Priebsch – "I like this piece because it explains the architectural journey, not just the end result. It is a good example of how alternative technical approaches can lead to new solutions."]]></description>
        </item>
        <item>
            <title>10 years ago: Composer goes gold</title>
            <link>https://seld.be/notes/composer-goes-gold/</link>
            <guid>https://seld.be/notes/composer-goes-gold/</guid>
            <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Jordi Boggiano’s post is a reminder of a milestone that shaped the modern PHP ecosystem: Composer 1.0 was announced on April 5, 2016, after roughly five years of development. Since then, Jordi and Nils Adermann have carried an enormous share of the work behind the most important tool in the PHP ecosystem.

Picked by Sebastian Bergmann – "One of PHP's real advantages is that the community converged on a single package manager. We owe Jordi and Nils a great deal of thanks for their outstanding work."]]></description>
        </item>
        <item>
            <title>Dependency hygiene: A case for fewer dependencies</title>
            <link>https://stitcher.io/blog/dependency-hygiene</link>
            <guid>https://stitcher.io/blog/dependency-hygiene</guid>
            <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Package managers are indispensable, but they also make it very easy to introduce dependencies a project does not actually need. This article highlights a neat composer.json technique to stop upstream dependencies from pulling in unnecessary polyfills.

Picked by Sebastian Bergmann – "What I like about this is that it treats unnecessary dependencies as a design problem, not just a tooling detail."]]></description>
        </item>
        <item>
            <title>Could community releases accelerate PHP?</title>
            <link>https://blog.daniil.it/2026/03/15/php-community-a-faster-moving-community-driven-php/</link>
            <guid>https://blog.daniil.it/2026/03/15/php-community-a-faster-moving-community-driven-php/</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Daniil Gentili, maintainer of Psalm, proposes an official rolling community release that would give developers early access to experimental PHP features. He argues that this might help the PHP community evolve the language even faster.

Picked by Sebastian Bergmann and Stefan Priebsch – "An interesting idea, albeit a controversial one. Discussing proposals like this is what PHP moves forward."]]></description>
        </item>
        <item>
            <title>Persistent database connections in PHP</title>
            <link>https://ilia.ws/blog/the-persistent-myth-why-your-php-app-needs-persistent-connection</link>
            <guid>https://ilia.ws/blog/the-persistent-myth-why-your-php-app-needs-persistent-connection</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[How do persistent database connections in PHP work, and why can they boost performance? Ilia Alshanetsky, PHP core contributor and former release manager, revisits why they were considered problematic in the days of shared hosting and explains why those concerns are often manageable in modern PHP deployments.

Picked by Sebastian Bergmann – "Seeing Ilia, one of the most experienced voices in the PHP community, blogging again is a real pleasure. We'd like to think that PHP Reads helped inspire his return."]]></description>
        </item>
        <item>
            <title>A community-run video platform for PHP</title>
            <link>https://afilina.com/why-phpc-tv</link>
            <guid>https://afilina.com/why-phpc-tv</guid>
            <pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[A new project aims to give the PHP community a community-run alternative to YouTube, focused on discovery, openness, and creator control rather than algorithms, ads, and platform lock-in. Built on PeerTube and inspired by the federated model behind phpc.social, it is intended as a more sustainable home for PHP video content and community exchange.

Picked by Stefan Priebsch – "Communities become stronger when they create the platforms and spaces they want to belong to."]]></description>
        </item>
        <item>
            <title>Introduction to PHP closures</title>
            <link>https://dev.to/mikevarenek/introduction-to-php-closures-5f2o</link>
            <guid>https://dev.to/mikevarenek/introduction-to-php-closures-5f2o</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[If you are unfamiliar with closures in PHP or have not given much thought to how they work, this blog post provides an excellent overview of the basics. It provides an accessible introduction to the concept and demonstrates why closures are useful in everyday PHP development.

Picked by Stefan Priebsch – "Read this if you want to set the stage for the other two pretty advanced posts we have selected for you this week."]]></description>
        </item>
        <item>
            <title>Why use static closures?</title>
            <link>https://f2r.github.io/en/static-closures</link>
            <guid>https://f2r.github.io/en/static-closures</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[The article explains that PHP closures created inside instance methods implicitly maintain a reference to the current object, even when the variable <code>$this</code> is not used directly. This subtle aspect of PHP closures can affect the lifetime of objects and their runtime behaviour in ways that many developers may not expect. An improvement will be introduced with PHP 8.6.

Picked by Sebastian Bergmann – "This concise read that sharpens your intuition for how small structural choices can affect runtime behavior and code quality."]]></description>
        </item>
        <item>
            <title>How to easily access private properties and methods in PHP</title>
            <link>https://freek.dev/3048-how-to-easily-access-private-properties-and-methods-in-php</link>
            <guid>https://freek.dev/3048-how-to-easily-access-private-properties-and-methods-in-php</guid>
            <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[This post shows how easy it can be in PHP to inspect or interact with an object’s private internals when you truly need to. More broadly, it uses that example to explain an interesting aspect of PHP itself: visibility is tied to class scope, and closures can be rebound in a way that opens access without a lot of heavy machinery.

Picked by Stefan Priebsch – "We did not select this post because you should access private methods and properties, but because it demonstrates an elegant way to solve this problem using closures."]]></description>
        </item>
        <item>
            <title>A pragmatic path to compile-time generics</title>
            <link>https://thephp.foundation/blog/2025/08/05/compile-generics/</link>
            <guid>https://thephp.foundation/blog/2025/08/05/compile-generics/</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Compile-time generics could bring many of the benefits of generics to PHP without the runtime complexity they usually require. Restricting generics to interfaces and abstract classes and resolving type parameters during compilation is a pragmatic approach that might deliver most of the value developers want, without fundamentally changing how PHP works.

Picked by Sebastian Bergmann – "Gina and Larry have produced outstanding research that provides an excellent background for understanding the challenges of implementing generics in a dynamic language."]]></description>
        </item>
        <item>
            <title>Performance improvements in PHP 8.5</title>
            <link>https://tideways.com/profiler/blog/whats-new-in-php-8-5-in-terms-of-performance-debugging-and-operations</link>
            <guid>https://tideways.com/profiler/blog/whats-new-in-php-8-5-in-terms-of-performance-debugging-and-operations</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[The PHP performance experts at Tideways highlight several improvements in PHP 8.5. Rather than explaining flashy new syntax, their overview focuses on practical changes that help developers better understand performance behavior, diagnose issues more quickly, and run PHP applications more reliably in modern environments.

Picked by Stefan Priebsch – "The faster TLS handshake implementation is a good example of how PHP evolves through behind-the-scenes improvements that benefit developers in everyday use."]]></description>
        </item>
        <item>
            <title>Cooperative multitasking in PHP</title>
            <link>https://www.npopov.com/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html</link>
            <guid>https://www.npopov.com/2012/12/22/Cooperative-multitasking-using-coroutines-in-PHP.html</guid>
            <pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Flashback: In this article, written as early as 2012, Nikita Popov demonstrates how PHP generators (introduced in PHP 5.5) can be used to implement coroutines and build a simple cooperative multitasking scheduler.

Picked by Stefan Priebsch – "Following his early contributions to PHP 5, Nikita Popov became one of the language's most influential contributors and played a key role in making PHP 7 possible."]]></description>
        </item>
        <item>
            <title>Introducing PHP Reads</title>
            <link>https://phpreads.com/why</link>
            <guid>https://phpreads.com/why</guid>
            <pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Stefan Priebsch and Sebastian Bergmann introduce PHP Reads, a curated, ads-free and tracking-free weekly selection of PHP blog posts worth reading. In response to the growing flood of low-value, AI-generated content, they aim to highlight thoughtful articles that offer real insight, practical reasoning, and fresh perspectives.

Written by Stefan Priebsch and Sebastian Bergmann.]]></description>
        </item>
        <item>
            <title>The PHP Foundation has a new executive director</title>
            <link>https://thephp.foundation/blog/2026/02/27/welcoming-elizabeth-barron-new-executive-director/</link>
            <guid>https://thephp.foundation/blog/2026/02/27/welcoming-elizabeth-barron-new-executive-director/</guid>
            <pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[The PHP Foundation has appointed Elizabeth Barron as its new Executive Director. She brings a background in open-source community governance, fundraising, and developer outreach. Founding Executive Director Roman Pronskiy moves to a board role while continuing his work at JetBrains.

Picked by Sebastian Bergmann – "Disclosure: I was part of the committee that selected Elizabeth. We selected this post because the PHP Foundation's long-term health matters to everyone in this community."]]></description>
        </item>
        <item>
            <title>Laravel 13 is around the corner</title>
            <link>https://laravel-news.com/laravel-13</link>
            <guid>https://laravel-news.com/laravel-13</guid>
            <pubDate>Tue, 03 Mar 2026 00:00:00 +0000</pubDate>
            <description><![CDATA[Paul Redmond of Laravel News maintains this page as a continuously updated summary of everything confirmed for Laravel 13. It's distilled directly from official sources. A reliable single reference to check back on until the release documentation is complete. This is expected for March 2026.

Picked by Stefan Priebsch – "One page that is kept up to date and comes straight from the source. We felt this is all that's needed."]]></description>
        </item>
    </channel>
</rss>