mirror of
https://github.com/DesignPatternsPHP/DesignPatternsPHP.git
synced 2025-02-24 09:42:24 +01:00
design patterns in PHP
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! ⛔)
- (Multiton)[tree/master/Multiton] (is considered an anti-pattern! ⛔)
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!
Languages
PHP
85.3%
Python
8%
Makefile
6.2%
Dockerfile
0.5%