├── LICENSE └── README.md /LICENSE: -------------------------------------------------------------------------------- 1 | /* 2 | * ---------------------------------------------------------------------------- 3 | * "THE BEER-WARE LICENSE" (Revision 42): 4 | * wrote this file. As long as you retain this notice you 5 | * can do whatever you want with this stuff. If we meet some day, and you think 6 | * this stuff is worth it, you can buy me a beer in return Poul-Henning Kamp 7 | * ---------------------------------------------------------------------------- 8 | */ 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | state-of-the-union 2 | ================== 3 | 4 | About 5 | ----- 6 | 7 | Describes various php DDD and CQRS initiatives all around the universe (mainly github universe, in fact). 8 | 9 | - **DDD**: stands for Domain Driven Design 10 | - **CQRS**: stands for Command Query Responsibility Segregation 11 | 12 | Resources 13 | --------- 14 | 15 | ### DDD introductions 16 | 17 | - [en] [slides] https://speakerdeck.com/richardmiller/avoiding-the-mud 18 | - [en] [slides] https://speakerdeck.com/mathiasverraes/unbreakable-domain-models-dpc13 19 | - [en] [video|slides] http://www.craftitonline.com/2014/01/ddd-series-domain-vs-frameworks-symfony2-silex-cilex-yolo-et-al/ 20 | - [en] [article] http://dddsample.sourceforge.net/characterization.html 21 | - [en] [video] https://www.youtube.com/watch?v=QaIGN_cTcc8 22 | - [en] [video] https://www.youtube.com/watch?v=0lrPeLSq_u8 23 | - [en] [slides] https://speakerdeck.com/jacegu/my-domain-is-mine-and-i-dont-share-it 24 | - [es] [youtube channel] http://www.youtube.com/playlist?list=PLfgj7DYkKH3DjmXTOxIMs-5fcOgDg_Dd2 25 | - [fr] [article] http://www.infoq.com/fr/articles/seven-modelling-smells 26 | - [fr] [article] http://www.croes.org/gerald/blog/domain-driven-design-ddd-pour-les-intimes/866/ 27 | - [fr] [article] http://blog.octo.com/domain-driven-design-des-armes-pour-affronter-la-complexite/ 28 | - [fr] [video] http://www.youtube.com/watch?v=dV8EFyIRagA 29 | - [fr] [PDF] http://blog.infosaurus.fr/public/docs/DDDViteFait.pdf 30 | 31 | ### SOLID principle 32 | 33 | - [en] [article] http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29 34 | - [fr] [article] http://afsy.fr/avent/2013/02-principes-stupid-solid-poo 35 | - [fr] [article] http://blog.lepine.pro/php/gerer-des-regles-metiers-complexes-etou-changeantes 36 | - [en] [article] http://williamdurand.fr/2013/07/30/from-stupid-to-solid-code/ 37 | 38 | ### Design patterns 39 | 40 | - https://github.com/domnikl/DesignPatternsPHP 41 | 42 | ### Code Organisation 43 | 44 | - [en] [article] http://williamdurand.fr/2013/08/07/ddd-with-symfony2-folder-structure-and-code-first/ 45 | 46 | ### Bounded contexts 47 | 48 | - [en] [article] https://github.com/beberlei/whitewashing.de/blob/master/2013/06/24/bounded_contexts.rst 49 | - [en] [video] https://www.youtube.com/watch?v=aieoAWXNjl0 50 | 51 | ### Specification pattern 52 | 53 | - [en] [article] http://en.wikipedia.org/wiki/Specification_pattern 54 | - [en] [article] https://github.com/beberlei/whitewashing.de/blob/master/2013/03/04/doctrine_repositories.rst 55 | - [fr] [article] http://blog.lepine.pro/php/gerer-des-regles-metiers-complexes-etou-changeantes 56 | - [fr] [article] http://blog.xebia.fr/2009/12/29/le-pattern-specification-pour-la-gestion-de-vos-regles-metier/ 57 | 58 | ### Service Layers 59 | - [en] [slides] http://www.slideshare.net/rosstuck/models-and-service-layers-hemoglobin-and-hobgoblins 60 | - [en] [video] https://www.youtube.com/watch?v=3uV3ngl1Z8g 61 | 62 | ### CQRS / Event Sourcing 63 | 64 | - [fr] [video] http://parleys.com/play/51b7f063e4b01033a7e4b764 65 | - [en] [slides] http://verraes.net/2013/12/fighting-bottlenecks-with-cqrs/ 66 | - [en] [article] http://vadimcomanescu.wordpress.com/2012/06/26/cqrs-domain-events-and-ddd-review/ 67 | - [en] [article] http://msdn.microsoft.com/en-us/library/jj554200.aspx 68 | - [en] [article] http://www.codeproject.com/Articles/555855/Introduction-to-CQRS 69 | - [en] [article] http://coding-insomnia.com/2012/05/28/a-trip-to-cqrs-intro/ 70 | - [en] [slides] http://verraes.net/2014/03/practical-event-sourcing/ 71 | - [en] [slides] https://speakerdeck.com/stijnvnh/cqrs-or-did-you-mean-cars 72 | - [ru] [article] http://habrahabr.ru/post/146429/ 73 | - [ru] [article] http://habrahabr.ru/post/149464/ 74 | - [en] [website] http://cqrs.nu/ 75 | 76 | ### Existing php frameworks/libraries integrations, discussions 77 | 78 | 79 | #### Proof of concept, implementation examples 80 | 81 | - https://github.com/TBeijen/DDD-HRM 82 | - https://github.com/beberlei/litecqrs-php 83 | - https://github.com/tyx/cqrs-php-sandbox 84 | - https://github.com/idr0id/ddd-blog 85 | - https://github.com/szjani/predaddy 86 | - https://github.com/malocher/cqrs-esb 87 | - https://github.com/prooph/event-store 88 | - https://github.com/prooph/service-bus 89 | - https://github.com/codeliner/php-ddd-cargo-sample 90 | - https://github.com/qandidate-labs/broadway 91 | - https://github.com/dddinphp/ddd 92 | - https://github.com/jgimeno/taskreporter 93 | - https://github.com/ferrius/ddd-cqrs-example 94 | 95 | ### Hexagonal 96 | 97 | Also know as Entity-Boundary-Interactor or Ports and Adapters. 98 | 99 | - [Symfony2 sample application](https://github.com/MarcelloDuarte/hexagonal-symfony/) 100 | - [Silex sample application](https://github.com/igorw/doucheswag/) 101 | - [Last Wishes: A Silex sample application](https://github.com/dddinphp/last-wishes/) 102 | - [Cockburn's hexagonal explains the architecture](http://alistair.cockburn.us/Hexagonal+architecture) 103 | - [Chris Fidao explains hexagonal architecture](http://fideloper.com/hexagonal-architecture) 104 | - [Palermo's onion shares the hexagonal architecture](http://jeffreypalermo.com/blog/the-onion-architecture-part-1) 105 | 106 | #### Typo3/Flow3 107 | 108 | - [poc] https://github.com/hmrdk/Cqrs.Core 109 | 110 | #### Symfony2 111 | 112 | - [en] [article] http://williamdurand.fr/2013/11/13/ddd-with-symfony2-basic-persistence-and-testing/ 113 | - [en] [article] http://williamdurand.fr/2013/08/20/ddd-with-symfony2-making-things-clear/ 114 | - [en] [slides] http://qafoo.com/talks/13_12_symfonycon_domain_events.pdf 115 | - [en] [article] https://romaricdrigon.github.io/2019/08/09/domain-events 116 | 117 | #### Zend Framework 2 118 | 119 | - https://github.com/prooph/ProophEventStoreModule 120 | - https://github.com/prooph/ProophServiceBusModule 121 | 122 | #### Doctrine2 123 | 124 | - [en] [article] http://www.tibobeijen.nl/blog/2011/06/27/ddd-using-doctrine-2-a-case-study/ 125 | - https://github.com/TBeijen/DDD-HRM/tree/v001 126 | - [en] [slides] http://qafoo.com/talks/13_12_symfonycon_domain_events.pdf 127 | 128 | ### CQRS implementations in other languages 129 | 130 | - [ruby] https://github.com/cavalle/banksimplistic 131 | - [fsharp] https://github.com/thinkbeforecoding/FsUno 132 | - [java] http://www.axonframework.org/ 133 | 134 | Recommended reading 135 | ------------------- 136 | 137 | ### DDD 138 | 139 | - ["Domain-Driven Design in PHP"](https://leanpub.com/ddd-in-php), Carlos Buenosvinos, Christian Soronellas, and Keyvan Akbary, 2014 140 | - ["Domain Driven Design Quickly"](http://www.infoq.com/fr/minibooks/domain-driven-design-quickly), InfoQ.com, 2006 141 | - "Domain-Driven Design: Tackling Complexity in the Heart of Software", Eric Evans, 2005 142 | - ["Domain-Driven Design: The First 15 Years"](https://leanpub.com/ddd_first_15_years), DDD Europe, 2019 143 | - "Applying Domain-Driven Design and Patterns: With Examples in C# and .NET", Jimmy Nilsson, 2006 144 | - "Implementing Domain-Driven Design", Vaughn Vernon, 2013 145 | - "Domain-Driven Design Reference: Definitions and Pattern Summaries", Eric Evans, 2014 146 | 147 | ####DDD C# implementations 148 | 149 | - ".NET Domain-Driven Design with C#: Problem - Design - Solution", Tim McCarthy, 2008 150 | 151 | ### Coding practices 152 | 153 | - "Patterns of Enterprise Application Architecture", Martin Fowler, 2002 154 | 155 | Other Github organisations 156 | -------------------------- 157 | 158 | - https://github.com/dddinphp 159 | - https://github.com/orgs/ddd-php 160 | - https://github.com/phpmentors-jp 161 | 162 | On Discussion Groups 163 | ---------------- 164 | 165 | - [DDDinPHP](http://dddinphp.org) on Google Group 166 | 167 | On twitter 168 | ---------- 169 | 170 | - https://twitter.com/DDDBE 171 | - https://twitter.com/dddbook 172 | 173 | On IRC 174 | ------ 175 | 176 | - [#DDDinPHP](irc://irc.freenode.net/#dddinphp) on Freenode 177 | --------------------------------------------------------------------------------