# 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!*