SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Robert Lemke
          The Secret Recipe for a Juicy M
          International PHP Conference 2010, Mainz




Montag, 11. Oktober 2010
Robert Lemke
                chief architect of TYPO3 Phoenix and FLOW3

                co-founder of the TYPO3 Association

                34 years old

                lives in Lübeck, Germany

                1 wife, 1 daughter, 1 espresso machine

                likes drumming




Montag, 11. Oktober 2010
= PHP 5.3 Full Stack Application Framework




Montag, 11. Oktober 2010
The FLOW3 Experience
                    Flow [flō] The mental state of operation in which the person is fully immersed in
                    what he or she is doing by a feeling of energized focus, full involvement, and
                    success in the process of the activity. Proposed by positive psychologist Mihály
                    Csíkszentmihályi, the concept has been widely referenced across a variety of fields.

                    FLOW3 [flō'three] The application framework which takes care of all hassle and lets
                    you play the fun part.




               The Secret Recipe for a Juicy M                         International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
DI        Dependency Injection              DRY
                                                                    YAA
                                          OOP   Object-Oriented Programming
     YAGNI
                            AOP Aspect-Oriented Programming
             CoC
                                          MVC   Model View Controller


                   POPO Plain Old PHP Object                      TDD
                                                  DDD    Domain-Driven Design
Montag, 11. Oktober 2010
Domain-Driven Design
                                   Domain
                                                               Desi
                                                                    g    n


                                                                                  lightblue.com


                           Lorem Ipsum id solum civibus definitionem usu, ex elit contentiones ius. Lorem
                           his quando facilisis efficiantur cu, delenit laboramus eos id, nec lorem invidunt te.
                           Suas aliquid consequuntur ne mei, cu qui dicit graeco timeam. Ad assum decore
                           definitiones ius, has dicat aliquip vocibus te, at per velit viderer legimus. Per no
               The Secret Recipe for a Juicy M                                 International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Domain: The activity or business of the user




               The Secret Recipe for a Juicy M   International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Goal
                To solve real problems
                of a real domain




               The Secret Recipe for a Juicy M   International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Domain-Driven Design




               The Secret Recipe for a Juicy M   International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Domain-Driven Design
                      focus on the domain and domain logic




               The Secret Recipe for a Juicy M               International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Domain-Driven Design
                      focus on the domain and domain logic

                      accurately map the domain concepts to software




               The Secret Recipe for a Juicy M                 International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Domain-Driven Design
                      focus on the domain and domain logic

                      accurately map the domain concepts to software

                      form a ubiquitous language among the project members




               The Secret Recipe for a Juicy M                 International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010
Ubiquitous language
                           a common vocabulary:
                           important prerequisite for successful collaboration

                           use same words for

                             discussion                class FlagshipStore {

                             modeling                      ...

                             development                   public function isProfitable() {
                                                               return ($this->earnings > ($this->expenses + $this->safetyMarg
                             documentation                 }

                                                          ...




               The Secret Recipe for a Juicy M                            International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Layered Architecture

                                            View
                       Presentation         Controller

                                            Application Logic
                            Domain          Domain Model

                                            Data Mapper (Persistence)
                           Data source      Data Source Abstraction




               The Secret Recipe for a Juicy M                          International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010
DDD Building Blocks
                                  Entity                       Value Object

                                     Aggregate
                                                     Repository

                                           Service
                                                                    Factory



               The Secret Recipe for a Juicy M        International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Entity

                           Defined by its identity
                           (instead of its properties)

                           Examples: Participant, Blog Post




                           (you probably used artificial keys like a UUID for
                           identifying entities in a database table)



               The Secret Recipe for a Juicy M                                 International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Value Object

                            Defined by its value

                            Immutable
                                                      Green
                            Examples: Color, Tag      Pantone 354c
                                                      R: 105 / G: 165 / B: 80
                                                      #69A550
                                                                        #IPC10

               The Secret Recipe for a Juicy M     International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Service

                           Actions within the domain which can't
                           be implemted by entities and value objects
                           alone

                           Services should be stateless

                           Example: "Postpone Conference Service"




               The Secret Recipe for a Juicy M                          International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Aggregate

                           Compound of Entities and Value Objects

                           Entity is Aggregate Root

                           No direct references to objects inside the
                           Aggregate from outside

                           Reduces complexity

                           Examples: Speaker Profile, Blog Post, Car ...




               The Secret Recipe for a Juicy M                            International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Repository

                            a.k.a. "where you keep things"

                            connection between clean domain
                            and dirty data storage

                            provides query methods for
                            retrieving domain objects




               The Secret Recipe for a Juicy M                International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
The Secret Recipe for a Juicy M   International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
The Secret Recipe for a Juicy M   International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Further Reading
                           FLOW3 Website
                           http://flow3.typo3.org

                           FLOW3 Download
                           http://flow3.typo3.org/download
                           git://git.typo3.org/FLOW3/Distributions/Base.git

                           TYPO3 Forge
                           http://forge.typo3.org

                           Further Reading
                           http://flow3.typo3.org/about/principles/further-reading



               The Secret Recipe for a Juicy M                            International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Questions

                Email:             robert@typo3.org
                Blog:              http://robertlemke.de/blog
                Twitter:           @t3rob

                Slides:            http://slideshare.net/rlmp
                Feedback:          http://joind.in/talk/view/2182




               The Secret Recipe for a Juicy M                  International PHP Conference 2010, Mainz
Montag, 11. Oktober 2010
Montag, 11. Oktober 2010

Contenu connexe

Similaire à The Secret Recipe of a Juicy M

OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13
Niklas Heidloff
 
Continuous Improvement in PHP projects
Continuous Improvement in PHP projectsContinuous Improvement in PHP projects
Continuous Improvement in PHP projects
Mayflower GmbH
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 

Similaire à The Secret Recipe of a Juicy M (20)

Realizzare un Virtual Assistant con Bot Framework Azure e Unity
Realizzare un Virtual Assistant con Bot Framework Azure e UnityRealizzare un Virtual Assistant con Bot Framework Azure e Unity
Realizzare un Virtual Assistant con Bot Framework Azure e Unity
 
FISE Integration with Python and Plone
FISE Integration with Python and PloneFISE Integration with Python and Plone
FISE Integration with Python and Plone
 
CCI2019 - Governance di una Conversational AI
CCI2019 - Governance di una Conversational AICCI2019 - Governance di una Conversational AI
CCI2019 - Governance di una Conversational AI
 
Windows Phone 7.5 Mango - What's New
Windows Phone 7.5 Mango - What's NewWindows Phone 7.5 Mango - What's New
Windows Phone 7.5 Mango - What's New
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 
Petra Mayer Pm Oct2011
Petra Mayer Pm Oct2011Petra Mayer Pm Oct2011
Petra Mayer Pm Oct2011
 
OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13OpenNTF Updates 03/05/13
OpenNTF Updates 03/05/13
 
Governance di una Conversational AI
Governance di una Conversational AIGovernance di una Conversational AI
Governance di una Conversational AI
 
The Laws of User Experience: Making it or breaking it with the UX Factor
The Laws of User Experience: Making it or breaking it with the UX FactorThe Laws of User Experience: Making it or breaking it with the UX Factor
The Laws of User Experience: Making it or breaking it with the UX Factor
 
The Laws of User Experience: Making it or Breaking It with the UX Factor
The Laws of User Experience: Making it or Breaking It with the UX FactorThe Laws of User Experience: Making it or Breaking It with the UX Factor
The Laws of User Experience: Making it or Breaking It with the UX Factor
 
Continuous Improvement in PHP projects
Continuous Improvement in PHP projectsContinuous Improvement in PHP projects
Continuous Improvement in PHP projects
 
Openbiz NYPHP group presentation
Openbiz NYPHP group presentationOpenbiz NYPHP group presentation
Openbiz NYPHP group presentation
 
Breizh camp adobe flex et les mobiles
Breizh camp   adobe flex et les mobilesBreizh camp   adobe flex et les mobiles
Breizh camp adobe flex et les mobiles
 
eLearning Africa
eLearning AfricaeLearning Africa
eLearning Africa
 
Gdsc IIIT Surat Orientation 2022.pdf
Gdsc IIIT Surat Orientation 2022.pdfGdsc IIIT Surat Orientation 2022.pdf
Gdsc IIIT Surat Orientation 2022.pdf
 
Intro to Open source. Amit Bhayani
Intro to Open source. Amit BhayaniIntro to Open source. Amit Bhayani
Intro to Open source. Amit Bhayani
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
INTRODUCTION TO FLUTTER.pdf
INTRODUCTION TO FLUTTER.pdfINTRODUCTION TO FLUTTER.pdf
INTRODUCTION TO FLUTTER.pdf
 
Google Cloud Platform - Cloud-Native Roadshow Stuttgart
Google Cloud Platform - Cloud-Native Roadshow StuttgartGoogle Cloud Platform - Cloud-Native Roadshow Stuttgart
Google Cloud Platform - Cloud-Native Roadshow Stuttgart
 
Open source softwares and its applications
Open source softwares and its applicationsOpen source softwares and its applications
Open source softwares and its applications
 

Plus de Robert Lemke

Plus de Robert Lemke (20)

Neos Content Repository – Git for content
Neos Content Repository – Git for contentNeos Content Repository – Git for content
Neos Content Repository – Git for content
 
A General Purpose Docker Image for PHP
A General Purpose Docker Image for PHPA General Purpose Docker Image for PHP
A General Purpose Docker Image for PHP
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022
 
GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022
 
OpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowOpenID Connect with Neos and Flow
OpenID Connect with Neos and Flow
 
Neos Conference 2019 Keynote
Neos Conference 2019 KeynoteNeos Conference 2019 Keynote
Neos Conference 2019 Keynote
 
A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)
 
Neos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteNeos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome Keynote
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRS
 
Neos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteNeos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome Keynote
 
IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes
 
IPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersIPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for Developers
 
Docker in Production - IPC 2016
Docker in Production - IPC 2016Docker in Production - IPC 2016
Docker in Production - IPC 2016
 
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
Is this Open Source Thing Really Worth it? (IPC 2016 Berlin)
 
The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)
 
Neos - past, present, future (Inspiring Conference 2016)
Neos - past, present, future (Inspiring Conference 2016)Neos - past, present, future (Inspiring Conference 2016)
Neos - past, present, future (Inspiring Conference 2016)
 
Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!
 
Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!
 
Turning Neos inside out / React.js HH
Turning Neos inside out / React.js HHTurning Neos inside out / React.js HH
Turning Neos inside out / React.js HH
 

The Secret Recipe of a Juicy M

  • 1. Robert Lemke The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 2. Robert Lemke chief architect of TYPO3 Phoenix and FLOW3 co-founder of the TYPO3 Association 34 years old lives in Lübeck, Germany 1 wife, 1 daughter, 1 espresso machine likes drumming Montag, 11. Oktober 2010
  • 3. = PHP 5.3 Full Stack Application Framework Montag, 11. Oktober 2010
  • 4. The FLOW3 Experience Flow [flō] The mental state of operation in which the person is fully immersed in what he or she is doing by a feeling of energized focus, full involvement, and success in the process of the activity. Proposed by positive psychologist Mihály Csíkszentmihályi, the concept has been widely referenced across a variety of fields. FLOW3 [flō'three] The application framework which takes care of all hassle and lets you play the fun part. The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 5. DI Dependency Injection DRY YAA OOP Object-Oriented Programming YAGNI AOP Aspect-Oriented Programming CoC MVC Model View Controller POPO Plain Old PHP Object TDD DDD Domain-Driven Design Montag, 11. Oktober 2010
  • 6. Domain-Driven Design Domain Desi g n lightblue.com Lorem Ipsum id solum civibus definitionem usu, ex elit contentiones ius. Lorem his quando facilisis efficiantur cu, delenit laboramus eos id, nec lorem invidunt te. Suas aliquid consequuntur ne mei, cu qui dicit graeco timeam. Ad assum decore definitiones ius, has dicat aliquip vocibus te, at per velit viderer legimus. Per no The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 7. Domain: The activity or business of the user The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 8. Goal To solve real problems of a real domain The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 9. Domain-Driven Design The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 10. Domain-Driven Design focus on the domain and domain logic The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 11. Domain-Driven Design focus on the domain and domain logic accurately map the domain concepts to software The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 12. Domain-Driven Design focus on the domain and domain logic accurately map the domain concepts to software form a ubiquitous language among the project members The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 14. Ubiquitous language a common vocabulary: important prerequisite for successful collaboration use same words for discussion class FlagshipStore { modeling ... development public function isProfitable() { return ($this->earnings > ($this->expenses + $this->safetyMarg documentation } ... The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 15. Layered Architecture View Presentation Controller Application Logic Domain Domain Model Data Mapper (Persistence) Data source Data Source Abstraction The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 21. DDD Building Blocks Entity Value Object Aggregate Repository Service Factory The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 22. Entity Defined by its identity (instead of its properties) Examples: Participant, Blog Post (you probably used artificial keys like a UUID for identifying entities in a database table) The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 23. Value Object Defined by its value Immutable Green Examples: Color, Tag Pantone 354c R: 105 / G: 165 / B: 80 #69A550 #IPC10 The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 24. Service Actions within the domain which can't be implemted by entities and value objects alone Services should be stateless Example: "Postpone Conference Service" The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 25. Aggregate Compound of Entities and Value Objects Entity is Aggregate Root No direct references to objects inside the Aggregate from outside Reduces complexity Examples: Speaker Profile, Blog Post, Car ... The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 26. Repository a.k.a. "where you keep things" connection between clean domain and dirty data storage provides query methods for retrieving domain objects The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 27. The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 28. The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 29. Further Reading FLOW3 Website http://flow3.typo3.org FLOW3 Download http://flow3.typo3.org/download git://git.typo3.org/FLOW3/Distributions/Base.git TYPO3 Forge http://forge.typo3.org Further Reading http://flow3.typo3.org/about/principles/further-reading The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010
  • 30. Questions Email: robert@typo3.org Blog: http://robertlemke.de/blog Twitter: @t3rob Slides: http://slideshare.net/rlmp Feedback: http://joind.in/talk/view/2182 The Secret Recipe for a Juicy M International PHP Conference 2010, Mainz Montag, 11. Oktober 2010