Poor application design can be an incredibly frustrating experience. Often we can attribute frustration in software projects to tight coupling and high interdependence between modules within the design. As developers, the Dependency Inversion Principle helps us design maintainable software by showing us the direction dependencies should flow. In this session we will look at the ideas of dependency injection and dependency inversion and how they can make your applications easier to work with for yourself and your colleagues. At the end of this session you will have a grasp on DI and even a taste of using modern PHP dependency injection containers correctly in your applications.