# design patterns in PHP [![Build Status](https://travis-ci.org/domnikl/DesignPatternsPHP.png?branch=master)](https://travis-ci.org/domnikl/DesignPatternsPHP) This is a collection of known design patterns and some sample code how to implement them in PHP. Every pattern has a small list of examples (most of them from Zend Framework, Symfony2 or Doctrine2 as I'm most familiar with this software). I think the problem with patterns is that often people do know them but don't know when to apply which. The patterns can be structured in roughly three different categories: ## Creational * [AbstractFactory](tree/master/AbstractFactory) * [Builder](tree/master/Builder) * [SimpleFactory](tree/master/SimpleFactory) * [FactoryMethod](tree/master/FactoryMethod) * [StaticFactory](tree/master/StaticFactory) * [Prototype](tree/master/Prototype) * [Singleton](tree/master/Singleton) (is considered an anti-pattern! :no_entry:) * [Multiton](tree/master/Multiton) (is considered an anti-pattern! :no_entry:) ## Structural * [Adapter](tree/master/Adapter) * [Composite](tree/master/Composite) * [Decorator](tree/master/Decorator) * [Facade](tree/master/Facade) * [Proxy](tree/master/Proxy) * [Registry](tree/master/Registry) * [FluentInterface](tree/master/FluentInterface) * [DataMapper](tree/master/DataMapper) * [DependencyInjection](tree/master/DependencyInjection) ## Behavioral * [ChainOfResponsibilities](tree/master/ChainOfResponsibilities) * [Command](tree/master/Command) * [Iterator](tree/master/Iterator) * [Mediator](tree/master/Mediator) * [NullObject](tree/master/NullObject) * [Observer](tree/master/Observer) * [StatusPattern](tree/master/StatusPattern) * [Strategy](tree/master/Strategy) * [TemplateMethod](tree/master/TemplateMethod) * [Visitor](tree/master/Visitor) *Please feel free to fork and extend existing or add your own examples!*