# 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](AbstractFactory) * [Builder](Builder) * [SimpleFactory](SimpleFactory) * [FactoryMethod](FactoryMethod) * [StaticFactory](StaticFactory) * [Prototype](Prototype) * [Singleton](Singleton) (is considered an anti-pattern! :no_entry:) * [Multiton](Multiton) (is considered an anti-pattern! :no_entry:) ## Structural * [Adapter](Adapter) * [Composite](Composite) * [Decorator](Decorator) * [Facade](Facade) * [Proxy](Proxy) * [Registry](Registry) * [FluentInterface](FluentInterface) * [DataMapper](DataMapper) * [DependencyInjection](DependencyInjection) ## Behavioral * [ChainOfResponsibilities](ChainOfResponsibilities) * [Command](Command) * [Iterator](Iterator) * [Mediator](Mediator) * [NullObject](NullObject) * [Observer](Observer) * [StatusPattern](StatusPattern) * [Strategy](Strategy) * [TemplateMethod](TemplateMethod) * [Visitor](Visitor) *Please feel free to fork and extend existing or add your own examples!*