Articles

New edition for the Rector Book

read more
Articles

Dealing with technical debt during the sprint

read more
Articles

Refactoring without tests should be fine

read more
Articles

Good design means it's easy-to-change

read more
Articles

Can we consider DateTimeImmutable a primitive type?

read more
Articles

Is it a DTO or a Value Object?

read more
Articles

A step-debugger for the PHP AST

read more
Articles

Simple Solutions 1 - Active Record versus Data Mapper

read more
Articles

What's a simple solution?

read more
Articles

My book-writing workflow

read more
Articles

When to use a trait?

read more
Articles

Decoupling your security user from your user model

read more
Articles

Effective immutability with PHPStan

read more
Articles

New book: Recipes for Decoupling

read more
Articles

DDD entities and ORM entities

read more
Articles

Too much magic?

read more
Articles

Millennials doing things everyone should know about

read more
Articles

Commit your code as if it could be accidentally deployed

read more
Articles

The Dependency Injection Paradigm

read more
Articles

Do you have an exit strategy?

read more
Articles

Quick Testing Tips: One Class, One Test?

read more
Articles

Quick Testing Tips: Write Unit Tests Like Scenarios

read more
Articles

Where do types come from?

read more
Articles

Quick Testing Tips: Testing Anything; Better Than Testing Nothing?

read more
Articles

Quick Testing Tips: Self-Contained Tests

read more
Articles

On using PSR abstractions

read more
Articles

Release of the Rector book

read more
Articles

Don't test constructors

read more
Articles

Early release of Rector - The power of automated refactoring

read more
Articles

Do tests need static analysis level max?

read more
Articles

Book excerpt - Decoupling from infrastructure, Conclusion

read more
Articles

Testing your controllers when you have a decoupled core

read more
Articles

Does it belong in the application or domain layer?

read more
Articles

Excerpt from PHP for the Web: Error handling

read more
Articles

Talk review: Thomas Pierrain at DDD Africa

read more
Articles

Successful refactoring projects - The Mikado Method

read more
Articles

Successful refactoring projects - Set the right goal

read more
Articles

Successful refactoring projects - Prepare to stop at any time

read more
Articles

Should we use a framework?

read more
Articles

Dynamically changing the log level in Symfony apps

read more
Articles

A simple recipe for framework decoupling

read more
Articles

Violating the Dependency rule

read more
Articles

Relying on the database to validate your data

read more
Articles

Free book chapter: Key design patterns

read more
Articles

Release of the Advanced Web Application Architecture book

read more
Articles

Unit test naming conventions

read more
Articles

Book release: PHP for the Web

read more
Articles

DDD and your database

read more
Articles

Creating a simple link registry

read more
Articles

Early release of the Advanced Web Application Architecture book

read more
Articles

Functional tests, and speeding up the schema creation

read more
Articles

Book review: The Writer's Process, by Anne Janzer

read more
Articles

Is all code in vendor infrastructure code?

read more
Articles

Rules for working with dynamic arrays and custom collection classes

read more
Articles

The release of Object Design Style Guide

read more
Articles

Defining a custom filter and sorter for Sculpin content types

read more
Articles

Improvements in personal website deployment

read more
Articles

Introducing MailComments

read more
Articles

Is not writing tests unprofessional?

read more
Articles

Using phploc for a quick code quality estimation - Part 2

read more
Articles

Using phploc for a quick code quality estimation - Part 1

read more
Articles

Dividing responsibilities - Part 2

read more
Articles

Dividing responsibilities - Part 1

read more
Articles

You may not need a query bus

read more
Articles

Learning Laravel - Observations, part 1: The service container

read more
Articles

Newcrafts 2019 Day 1

read more
Articles

Style Guide for Object Design: Release of the PHP edition

read more
Articles

Hand-written service containers

read more
Articles

DDD Europe notes - Day 2

read more
Articles

DDD Europe notes - Day 1

read more
Articles

Principles of Package Design, 2nd edition

read more
Articles

Test-driving repository classes - Part 2: Storing and retrieving entities

read more
Articles

Test-driving repository classes - Part 1: Queries

read more
Articles

Assertions and assertion libraries

read more
Articles

Final classes by default, why?

read more
Articles

Reusing domain code

read more
Articles

When to add an interface to a class

read more
Articles

Improving your software project by being intolerant

read more
Articles

More code comments

read more
Articles

Negative architecture, and assumptions about code

read more
Articles

Objects should be constructed in one go

read more
Articles

About fixtures

read more
Articles

Blogging every week

read more
Articles

Testing actual behavior

read more
Articles

Doctrine ORM and DDD aggregates

read more
Articles

Road to dependency injection

read more
Articles

Deliberate coding

read more
Articles

When and where to determine the ID of an entity

read more
Articles

Book review: Fifty quick ideas to improve your tests - Part 2

read more
Articles

Book review: Fifty quick ideas to improve your tests - Part 1

read more
Articles

Book review: Discovery - Explore behaviour using examples

read more
Articles

Remote working

read more
Articles

Context passing

read more
Articles

Combing legacy code string by string

read more
Articles

Exceptions and talking back to the user

read more
Articles

Mocking the network

read more
Articles

Modelling quantities - an exercise in designing value objects

read more
Articles

ORMless; a Memento-like pattern for object persistence

read more
Articles

Mocking at architectural boundaries: the filesystem and randomness

read more
Articles

Lasagna code - too many layers?

read more
Articles

Mocking at architectural boundaries: persistence and time

read more
Articles

Local and remote code coverage for Behat

read more
Articles

Reducing call sites with dependency injection and context passing

read more
Articles

Unary call sites and intention-revealing interfaces

read more
Articles

Keep an eye on the churn; finding legacy code monsters

read more
Articles

Simple CQRS - reduce coupling, allow the model(s) to evolve

read more
Articles

Layers, ports & adapters - Part 3, Ports & Adapters

read more
Articles

Layers, ports & adapters - Part 2, Layers

read more
Articles

Layers, ports & adapters - Part 1, Foreword

read more
Articles

Designing a JSON serializer

read more
Articles

How to make Sculpin skip certain sources

read more
Articles

The case for singleton objects, façades, and helper functions

read more
Articles

Making money with open source, etc.

read more
Articles

Duck-typing in PHP

read more
Articles

Convincing developers to write tests

read more
Articles

Introducing the ConvenientImmutability package

read more
Articles

Introducing the SymfonyConsoleForm package

read more
Articles

Containerizing a static website with Docker, part III

read more
Articles

Containerizing a static website with Docker, part II

read more
Articles

Containerizing a static website with Docker, part I

read more
Articles

Creating virtual pages with Sculpin

read more
Articles

Project documentation with Sculpin

read more
Articles

A Year With Symfony - End Of Life

read more
Articles

Symfony Catalunya

read more
Articles

Behind the scenes at Coolblue

read more
Articles

Meeting the Broadway team - talking DDD, CQRS and event sourcing

read more
Articles

Refactoring the Cat API client - Part III

read more
Articles

Refactoring the Cat API client - Part II

read more
Articles

Refactoring the Cat API client - Part I

read more
Articles

Experimenting with Broadway

read more
Articles

Introducing the SymfonyBundlePlugins package

read more
Articles

Compartmentalization in the PHP community

read more
Articles

Lean publishing "Principles of Package Design"

read more
Articles

Collecting events and the event dispatching command bus

read more
Articles

Some questions about the command bus

read more
Articles

From commands to events

read more
Articles

Responsibilities of the command bus

read more
Articles

A wave of command buses

read more
Articles

The Hexagonal Architecture training tour

read more
Articles

Packages: the case for clones

read more
Articles

Decoupling from a service locator

read more
Articles

Symfony in Barcelona

read more
Articles

Unnecessary contrapositions in the new "Symfony Best Practices"

read more
Articles

Composer "provide" and dependency inversion

read more
Articles

Announcements after a year with "A Year With Symfony"

read more
Articles

Backwards compatible bundle releases

read more
Articles

Semantic versioning for bundles

read more
Articles

Exposing resources: from Symfony bundles to packages

read more
Articles

Decoupling your (event) system

read more
Articles

Symfony2: Event subsystems

read more
Articles

Celebrating a year with "A Year With Symfony"

read more
Articles

A better PHP testing experience Part II: Pick your test doubles wisely

read more
Articles

The PHP testing experience: Interview by Fernando Arconada

read more
Articles

A better PHP testing experience Part I: Moving away from assertion-centric unit testing

read more
Articles

A better PHP testing experience: Introduction

read more
Articles

Symfony2: Framework independent controllers part 3: Loose ends

read more
Articles

Symfony2: Framework independent controllers part 2: Don't use annotations

read more
Articles

Symfony2: How to create framework independent controllers?

read more
Articles

Inject a repository instead of an entity manager

read more
Articles

Inject the ManagerRegistry instead of the EntityManager

read more
Articles

Book review: Modernizing Legacy Applications in PHP

read more
Articles

Principles of PHP Package Design - First part of the book is now available

read more
Articles

There's no such thing as an optional dependency

read more
Articles

Test Symfony2 commands using the Process component and asynchronous assertions

read more
Articles

About coding dojos, the Symfony meetup and my new book

read more
Articles

A Year With Symfony: Bonus chapter is now available!

read more
Articles

The "dark" side of PHP

read more
Articles

Interview with Leanpub: A Year With Symfony

read more
Articles

PHP - The Future of Packages

read more
Articles

Symfony2: Add a global option to console commands and generate a PID file

read more
Articles

Symfony2: Some things I don't like about Bundles

read more
Articles

Looking back at the release of "A Year With Symfony"

read more
Articles

Symfony2: Console Commands as Services - Why?

read more
Articles

Principles of PHP Package Design

read more
Articles

Symfony2 & TDD: Testing a Configuration Class

read more
Articles

Official book presentation: A Year With Symfony

read more
Articles

Why Symfony? Seven Facts

read more
Articles

A New Book About Symfony2: A Year With Symfony

read more
Articles

Symfony2: Rich Console Command Output Using AOP

read more
Articles

PHPUnit & Pimple: Integration Tests with a Simple DI Container

read more
Articles

Slides for my "Dependency Injection Smells" talk

read more
Articles

Dependency Injection Smells - Speaking at the Dutch PHP Conference

read more
Articles

Symfony2: Defining and dispatching custom form events

read more
Articles

Symfony2: Security enhancements part II

read more
Articles

Symfony2: Security enhancements part I

read more
Articles

Dependency injection smells

read more
Articles

Symfony2 & Twig: Collecting data across templates using a node visitor

read more
Articles

Prevent controller execution with annotations and return a custom response

read more
Articles

Symfony2: Application configuration for teams

read more
Articles

Experiences with PHP open source software in a Symfony-friendly environment

read more
Articles

Combining GridFS files with ORM entities

read more
Articles

Uploading files to MongoDB GridFS

read more
Articles

Symfony2 & MongoDB ODM: Adding the missing ParamConverter

read more
Articles

Symfony2 & MongoDB ODM: Creating custom types with dependencies

read more
Articles

Symfony2: Introduction to the Security Component part III

read more
Articles

Symfony2: Introduction to the Security Component part II

read more
Articles

Symfony2: Introduction to the Security Component part I

read more
Articles

Symfony2 Security: Using advanced Request matchers to activate firewalls

read more
Articles

Symfony Security Component & Silex: Adding a security voter for domain names

read more
Articles

Symfony2 Security: Creating dynamic roles (using RoleInterface)

read more
Articles

Silex: Using HttpFoundation and Doctrine DBAL in a Legacy PHP Application

read more
Articles

Let Silex Wrap Your Legacy PHP Application (and add Twig for templating)

read more
Articles

Symfony2: Testing Your Controllers

read more
Articles

Symfony2 Config Component: Config Definition and Processing

read more
Articles

Symfony2 Config Component: Using FileLocator, Loaders and LoaderResolver

read more
Articles

Symfony2 & JMSSerializerBundle: Vendor MIME types and API versioning

read more
Articles

PHP: A Custom Stream Wrapper Part 2: Reading and Seeking

read more
Articles

PHP: Create an Object-Oriented XML Parser using the Built-in xml_* Functions

read more
Articles

PHP: Setting up a Stream Wrapper for Manipulating the DOM

read more
Articles

Symfony2: Setting up a Console-centered Application (with Composer)

read more
Articles

Symfony2 & Metadata: Caching Class- and PropertyMetadata

read more
Articles

Symfony2: Writing a Yaml Driver for your Metadata Factory

read more
Articles

Symfony2: Creating a Metadata Factory for Processing Custom Annotations

read more
Articles

Symfony2: creating a ParamConverter for deserializing request content

read more
Articles

Symfony2: Deserializing request content right into controller arguments

read more
Articles

Silex: creating a service provider for Buzz

read more
Articles

How to Install Sismo

read more
Articles

PHPUnit: Writing a Custom Assertion

read more
Articles

Wordpress & Symfony2: using the CssSelector and FluentDOM to filter HTML snippets

read more
Articles

Silex: set up your project for testing with PHPUnit

read more
Articles

Silex: getting your project structure right

read more
Articles

The Symfony2 Serializer Component: create a Normalizer for JSON class hinting

read more
Articles

Symfony2: dynamically add routes

read more
Articles

Symfony2 & Doctrine Common: creating powerful annotations

read more
Articles

Symfony2: Extending forms globally ("you know, like with CSRF protection")

read more
Articles

Symfony2: Creating a Validator with dependencies? Make it a service!

read more
Articles

Symfony2: An alternative to Symfony 1's "routing.load_configuration" event

read more
Articles

PHPUnit: create a ResultPrinter for output in the browser

read more
Articles

Symfony2: running PHPUnit from within a controller

read more
Articles

Symfony2: define your bundle's configuration values using the TreeBuilder

read more
Articles

Symfony2: use a bootstrap file for your PHPUnit tests and run some console commands

read more
Articles

Symfony2: how to create a custom Response using an event listener

read more
Articles

Use DocBlox in Symfony2 for inspecting DocComment blocks

read more
Articles

Symfony2: create a response filter and set extra response headers

read more
Articles

Symfony2: How to create a UserProvider

read more
Articles

Symfony2 service container: how to make your service use tags

read more
Articles

Dutch PHP Conference wisdom applied to working with the symfony framework

read more