Over the last few weeks, I have been working on rewriting the PHP Reflection extension in Rust as an exercise in building extensions in Rust. In addition to understanding how to implement extensions in Rust, the process also highlighted a number of ways that the Reflection extension could be improved. Continue reading...
As I mentioned in my last blog post, while at ConFoo I and a few other developers worked on some ideas for adding friendship support to PHP. To be clear, these are just ideas at the moment, but I figured they were worth sharing. Continue reading...
Now that we are a few weeks into 2026, I figured it would be a good opportunity for me to reflect on my PHP contributions in 2025. It was a pretty big year for me in terms of contributing to the php-src repo. Continue reading...
Sometimes, code needs to be able to signal an error has occurred. Perhaps some invariant was violated. Perhaps an invalid parameter was used. Regardless of the reason, there are two ways to signal an issue: "in-band signaling", and "out-of-band signaling". Continue reading...
PHP 8.5 will come with a new attribute, #[\DelayedTargetValidation], that
is intended to help libraries that support running on multiple versions of PHP.
The attribute can be a bit confusing, so as the author I figured I should write
up a (hopefully helpful) guide. Continue reading...
A few minutes ago, my third RFC,
adding support for promoted final properties, was implemented
after being approved unanimously. This comes after my second RFC,
adding support for never parameters, was rejected by the
community. Continue reading...
Earlier today, the attributes-on-constants RFC implementation was finally merged. This was a project I worked on for months and a significant reason I became more active as a PHP core developer. The initial motivation was to add a way for constants to be marked as deprecated, so that MediaWiki could use that feature to signal deprecated constants instead of relying solely on documentation. Continue reading...