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 Talks Articles Podcasts Community

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+ downloads 186 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+ downloads 164 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.