Excellent PHP writing, hand-picked.
No buzzwords. No ads. No nonsense. Curated by Stefan Priebsch and Sebastian Bergmann of thePHP.cc as a free service to the PHP community.

View all issues →

Issue #16

The structures behind the software

14 July 2026

"Software is shaped not only by the code we write, but by the structures around it: how people find their way into a project, how deeply we understand existing implementations, and what guarantees our infrastructure provides. This issue examines how the PHP ecosystem is organizing its continued development."
— Stefan & Sebastian

ben.ramsey.dev

Who do I talk to?

PHP has people eager to contribute, but it does not always give them a clear place to begin. Ben Ramsey proposes chartered working groups that make responsibilities, membership, communication, and decision-making explicit without introducing a new hierarchy.

Picked by Stefan Priebsch – "PHP does not lack people willing to contribute; it lacks visible paths into the work. Ben's proposal is an interesting starting point for further discussion."

scherzer.dev

Rewriting reflection with Rust

Daniel Scherzer rewrote PHP's Reflection extension in Rust as a learning exercise. Examining the existing implementation line by line uncovered an eighteen-year-old bug, missing type validation, documentation errors, and opportunities to simplify and optimize the C code.

Picked by Sebastian Bergmann – "A rewrite can be valuable even when it is never intended to replace the original. Daniel's experiment produced a deeper understanding of the current implementation."

blog.packagist.com

Immutable versions on Packagist

Packagist has made stable version metadata immutable. Once a version has been published, the Git reference behind it can no longer be silently changed, while deleted versions remain visible with an explanation and actions such as blocked retags are recorded in a transparency log.

Picked by Stefan Priebsch and Sebastian Bergmann – "A version number must identify one body of code, forever. Making stable versions immutable removes ambiguity for users, tools, and security processes."

Issue #15

Staying in control

7 July 2026

"This issue features a library rebuilt by its maintainer after 25 years, a static analysis tool ported to Rust by an LLM, and a coding agent locked into a sandbox. Different stories, one common thread: no matter how our tools change, we developers stay in control."
— Stefan & Sebastian

tecnick.com

Rebuilding TCPDF after 25 years

Nicola Asuni looks back on the history of TCPDF, the PDF generation library that started as a workaround in an e-commerce project and ended up many software projects. Instead of continuing to patch the code, he has rebuilt everything from scratch.

Picked by Stefan Priebsch – “Few maintainers get to reflect on a quarter century of one library. Nicola Asuni has many years on a library that much of the PHP world depends on, and he is not done yet. That kind of dedication deserves our gratitude and support.”

mattbrown.dev

Trying to port Psalm to Rust

Matt Brown, the original creator of Psalm, wanted to know whether an LLM could port his static analysis tool to Rust. It could, mostly: after months of iteration and a hefty token bill, Pzoom runs ten times faster than Psalm and passes almost the entire test suite.

Picked by Sebastian Bergmann – “Matt writes honestly about what the LLM got right and where he had to step in himself. Without Psalm's test suite, this rewrite would have been a gamble.”

einenlum.com

Running coding agents in a sandbox

How can we let coding agents work autonomously, but without giving it full access to our machine? The author of this article locks the agent into a sandbox and shows step by step how to get a PHP project, database included, working inside it.

Picked by Stefan Priebsch and Sebastian Bergmann – "No matter how capable coding agents become, one thing must not change: we are in charge of our own machines. Using a sandbox helps us to keep it that way."

Issue #14

The work behind PHP

23 June 2026

"On the surface, these articles are about funding, generics, and friend classes. Together, they reveal something broader: how PHP evolves through institutional support, careful debate, and contributions from across the community."
— Stefan & Sebastian

thephp.foundation

What the PHP Foundation delivered in 2025

In a significant year for PHP, which marked its thirtieth anniversary, the PHP Foundation helped deliver PHP 8.5, released PIE 1.0, began modernizing the streams layer, and accounted for roughly 42% of PHP core commits. The Foundation's 2025 Impact and Transparency Report details how $730,534 in contributions were collected and spent.

Picked by Stefan Priebsch – "This report makes the Foundation’s contribution to PHP’s development visible and gives useful detail on how its funding is used.”

gpb.moe

The case against erased generics in PHP

PHP core developer Gina Banyard argues that runtime-erased generics conflict with PHP’s established runtime type system and depend too heavily on optional static analysis tools. She makes the case for incrementally introducing runtime-checked generics instead.

Picked by Sebastian Bergmann – “A clear case for treating generics as a language design problem rather than leaving their semantics to static analysis tools. This article offers the counterpoint to the position we featured two issues ago.”

scherzer.dev

Exploring friend classes for PHP

The author explores how PHP could support “friend” classes, allowing selected code to access private or protected members without making them public. He compares an attribute-based approach with class-level language syntax and examines the semantic problems each option introduces.

Picked by Stefan Priebsch and Sebastian Bergmann – "We selected this article not because of the importance of the feature itself, but because it demonstrates how the language evolves through the work and contributions of the PHP community."