Articles


A static analysis first approach to RFCs

March 8th 2026 software design static analysis open source

Where appropriate should PHP updates start off in static analysis world before becoming part of the PHP language? [Read]


Introducing the InjectableVersion attribute

March 3rd 2026 software design static analysis open source

Learn how the InjectableVersion attribute ensures that correct interface of class is used in Dependency Injection. [Read]


Introducing the RestrictTraitTo attribute

February 26th 2026 software design static analysis open source

Learn how the RestrictTraitTo attribute ensures that traits are used correctly. [Read]


Introducing the TestTag attribute

November 28th 2025 software design static analysis open source

Learn how the TestTag attribute helps with testing. [Read]


Introducing the NamespaceVisibility attribute

October 21st 2025 software design static analysis open source

Learn how the NamespaceVisibility attribute emulates the missing package visibility modifier. [Read]


Introducing the MustUseResult attribute

October 5th 2025 software design static analysis open source

Learn how the MustUseResult attribute can prevent coding mistakes. [Read]


Introducing the Friend attribute (example 1)

September 27th 2025 software design static analysis open source

Learn how the Friend attribute can be used to enforce the usage of creational design patterns. [Read]


Introducing the PHP Language Extensions Library

September 14th 2025 software design static analysis

It's possible to use static analysis to emulate new language features in PHP. This article examines how, and introduces the PHP Language Extension Library. [Read]


Adding PHPStan to existing projects: Sell the dream, manage the expectations

June 23rd 2023 phpstan static analysis

This is the first part of a 4 part series of articles about adding PHPStan to existing projects. First we'll deal with team members who might object. [Read]


SARB version 1 released

March 18th 2021 baselining sarb

Static Analysis Results Baseliner (SARB) is used to create a baseline of these results. As work on the project progresses SARB can takes the latest static analysis results, removes those issues in the baseline and report the issues raised since the baseline. Learn all about version 1. [Read]


A standard for generics in PHP

December 14th 2020 generics

Generics in PHP is already a reality with static analysis. The leading static analysers have largely converged on an unofficial standard. This article proposes the first steps towards a standard. [Read]


PHP Generics Today (almost)

June 5th 2019 generics

Many PHP developers would love generics. We might have to wait a while until they come along. This article shows how existing tools can give us the power of generics now (almost). [Read]


Using AI to convert PHP engine from C to Rust

April 1st 2023 april fool

The code that executes PHP is currently written in C. Converting this to Rust offers many advantages. This article talks about work in progress to convert the C code to Rust, using Chat GPT. [Read]