mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-02-24 01:32:22 +01:00
49 lines
1.8 KiB
Markdown
49 lines
1.8 KiB
Markdown
# design patterns in PHP
|
|
|
|
[](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!*
|
|
|