Extending the PHP Language
Learn how to implement new language features using static analysis.
As a seasoned conference speaker, I've shared my insights on code quality, testing and static analysis at events around the world. I aim for my talks to be informative and engaging, leaving audiences with practical takeaways they can apply immediately to their work.
See my speaking diary for every event I've spoken at.
Organising an event? See my speaker profile
Learn how to implement new language features using static analysis.
As AI generates more of our code, custom PHPStan rules keep quality and coding standards in check.
PHPStan increases code quality and reduces bugs. Learn how custom rules amplify these benefits.
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).
Rector is best known for code upgrades, but it can do much more. Learn how to automate repetitive tasks and enforce standards with custom rules.
This talks through how to do upgrade legacy codebases.
Type hints reduce bugs and enable safe refactoring, but PHP's type system has limits. Learn how static analysis bridges the gaps.
Static Analysis can drastically reduce the bug count in your codebase. This talk gives practical advice on integrating static analysis into your development workflow.
Tips on how to use static analysis tools with legacy projects
It's good practice to write decoupled code. That good practice should include minimising the coupling between your test code and the code under test. This talk examines why this is important and how to achieve it.
There are so many benefits from code review; lower development costs, increased code quality, quick up-skilling and on-boarding of team members. This talk shows you how to get the best out of code review.
The Dependency Injection Component is a key part of all Symfony applications. It helps developers write decoupled and maintainable code.
This talk look at the properties of unit, integration and system tests in terms of what they test, how fast they run and how quick they are to write. Will look at how to get the most out of testing at each of these levels, how best to architect code for testing and where best to make comprises.
A lightning talk on AI assisted coding (May 2026)
This talk will show you how to write cleaner code with fewer bugs. And best of all you can apply them the next time you write code.
A quick look at Value Objects, what they are, the benefits they offer and why sometimes they should be used instead of PHP's primitive types.
Let me share my git eureka moment with you. The moment when suddenly everything git related made sense. We'll delve just below the surface to understand what commits and branch really are. With these concepts cemented we'll look at some of git's more advanced features.
Learn how to write code to get the most from static analysis tools, so you reduce the bug count on projects you're working on.
Quick introduction to integrating code review using Gerrit into your workflow.
Decoupled code is easier to understand, test and extend. This talk looks at how you can use events for decoupling.
Testing code is difficult right? Not if you design your code with testability in mind. Learn how with this talk.
Workshop to create your custom Rector rules
Full-day workshop covering how to write custom rules for both PHPStan and Rector.
Code review and CI are vital parts of the modern software development process. It also dead easy to set these up for your project. Find out why and how in this talk
Workshop to create your custom PHPStan rules