Talks, tools, and articles from the Lamp team.
We build software for clients. We also contribute to the wider development community through conference talks, open source tools, and written guides. Everything here reflects the same priorities we bring to client work: code quality, testing, static analysis, and building systems that last.
Open source
PHP Language Extensions
Attributes that define new language features in PHP, enforced by static analysis rather than at runtime. Examples include #[Friend], #[NamespaceVisibility]. Used in production codebases including our own.
GitHub → 450k+ downloads186 stars
SARB (Static Analysis Results Baseliner)
The biggest barrier to adopting static analysis on an existing project is the wall of pre-existing warnings. SARB creates a baseline so only new issues are reported. Your team gets the benefit of static analysis immediately, and you can work through historical issues at your own pace.
SARB is language-agnostic. It works with any static analysis tool that outputs results, not just PHP tools.
GitHub → 1M+ downloads164 stars
Test Splitter
Splits PHPUnit test suites into batches for parallel execution, reducing CI pipeline time.
PHPStan Rule Test Helper
Makes it easier to write tests for custom PHPStan rules. If you're building your own rules (something we cover in our workshops), this speeds up the process.
Conference talks
Dave Liddament speaks regularly at international conferences on testing, static analysis, code quality, and architecture. These are the same topics we cover in our Train workshops, so the talks give a good sense of how we teach.
Extending the PHP Language
How to implement new language features using static analysis. The thinking behind the PHP Language Extensions library.
PHPTek 2025 Watch →
Custom PHPStan Rules: Automate Standards and Save Time
PHPStan finds bugs. Custom rules let you enforce your team's specific standards automatically. This talk shows you how to write them.
phpday 2025 Watch →
AssertTrue(isDecoupled("my tests")
Writing decoupled code is good practice. That should extend to your test code too. This talk examines why test coupling is expensive and how to reduce it.
Longhorn PHP 2025 Watch →
Elevating Legacy
The practical story of upgrading a legacy codebase. Tools used, things that went well, and lessons learned.
PHP UK Conference 2024 Watch →
Demystifying Dependency Injection in Symfony
How Symfony's Dependency Injection Component works, how to configure it, and how to use Attributes for scalable, maintainable code.
SymfonyCon Vienna 2024, SymfonyOnline January 2025
Mastering automated refactoring with custom Rector rules (Workshop)
Hands-on tutorial: create your own Rector rules for automated refactoring.
Longhorn PHP 2025, PHPTek 2025
PHP Generics Today (almost)
How existing tools give you the power of generics now.
PHP UK 2020, IPC Munich Watch →
Practical Static Analysis
Integrating static analysis into your development workflow.
PHP UK 2022 Watch →
Effective Code Review
The business case for code review and how to make it work.
PHP UK Conference Watch →
Articles
Introducing the PHP Language Extensions Library
The concept: using attributes and static analysis to emulate new language features.
Sep 2025 Read →
Introducing the Friend attribute
Enforcing creational design patterns. Only the factory can create the object.
Sep 2025 Read →
Introducing the MustUseResult attribute
Preventing a common class of bugs where a return value is accidentally ignored. PHP 8.5 later introduced #[NoDiscard] which does the same thing natively.
Oct 2025 Read →
Introducing the NamespaceVisibility attribute
Emulating the missing package visibility modifier.
Oct 2025 Read →
Introducing the TestTag attribute
Helping with test organisation and filtering.
Nov 2025 Read →
A standard for generics in PHP
A proposal for formalising the notation used for PHP generics.
Dec 2020 Read →
SARB version 1 released
What's new in SARB v1 and how to use it.
Mar 2021 Read →
Coding Without Fear
Using advanced static analysers on existing projects.
Published in PHP Architect magazine, Oct 2019
Podcasts
Community Corner: SARB and PHP Language Extensions
Dave joined the PHP Architect podcast to discuss both open source projects, the philosophy behind them, and an upcoming Rector workshop.
PHP Architect, Jun 2025 Listen →
Static Analysis with Dave Liddament
Dave joined Oliver Davies on the Beyond Blocks podcast to discuss PHPStan and static analysis.
Beyond Blocks, Episode 22 Listen →
Community
PHP-SW
Bristol's PHP meetup, running monthly on the second Wednesday. Dave organises, finds speakers, arranges venues, and hosts.