SlideShare a Scribd company logo
Robert Lemke


Hands on FLOW3
Robert Lemke

project founder of FLOW3 and TYPO3 “Phoenix”

co-founder of the TYPO3 Association

coach, coder, consultant

36 years old

lives in Lübeck, Germany

1 wife, 2 daughters, 1 espresso machine

likes drumming
At a Glance

FLOW3 is a web application platform
 • holistic concept for your apps

 • modular, extensible, package based

 • pedantically clean with focus on quality

 • puts a smile on developer’s faces


 • free & Open Source (LGPL v3)

 • backed by one of the largest Open Source projects
Foundation for the Next Generation CMS


TYPO3 “Phoenix” is the all-new
Enterprise CMS
 • content repository, workspaces,
   versions, i18n, modular UI ...

 • powered by FLOW3

 • compatible code base

 • use TYPO3 features in FLOW3
   standalone apps as you like
TEXT HERE
1. Command Line
IPCSE12: Hands on FLOW3
TEXT HERE
IPCSE12: Hands on FLOW3
IPCSE12: Hands on FLOW3
2. Action Controller
IPCSE12: Hands on FLOW3
3. Templating
IPCSE12: Hands on FLOW3
TEXT HERE
4. Models
IPCSE12: Hands on FLOW3
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
5. Persistence
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
6. Domain-Driven Design
Tackling the Heart of Software Development

                                         /**
Domain-Driven Design                      * A Book
                                          *
                                          * @FLOW3Scope(“protot
                                                                 ype”)
                                          * @FLOW3Entity
A methodology which ...                   */
                                        class Book {

 • results in rich domain models        	    /**
                                        	     * @var string
                                        	     */
 • provides a common language           	    protected $title;

   across the project team          	       /**
                                    	        * @var string
                                    	        */
 • simplify the design of complex   	       protected $isbn;
   applications                     	       /**
                                    	        * @var string
                                    	        */
                                    	       protected $description
                                                                   ;
FLOW3 is the first PHP framework
                                    	       /**
tailored to Domain-Driven Design    	        * @var integer
                                    	        */
                                    	       protected $price;
IPCSE12: Hands on FLOW3
Domain-Driven Design
7. Resources
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
7. Dependency Injection
TEXT HERE
TEXT HERE
Object Management

FLOW3's take on Dependency Injection
 • one of the first PHP implementations
   (started in 2006, improved ever since)

 • object management for the whole lifecycle of all objects

 • no unnecessary configuration if information can be
   gatered automatically (autowiring)

 • intuitive use and no bad magical surprises

 • fast! (like hardcoded or faster)
Constructor Injection

namespace AcmeDemoController;

use TYPO3FLOW3MvcControllerActionController;
use AcmeDemoServiceGreeterService;

class DemoController extends ActionController {
	
	   /**
	    * @var AcmeDemoServiceGreeterService
	    */
	   protected $greeterService;

	   /**
	     * @param AcmeDemoServiceGreeterService
	     */
	   public function __construct(GreeterService $greeterService) {
	   	    $this->greeterService = $greeterService;
	   }
	
    /**
      * @param string $name
      */
    public function helloAction($name) {
    	
    	     return $this->greeterService->greet($name);
    }
}
Setter Injection

namespace AcmeDemoController;

use TYPO3FLOW3MVCControllerActionController;
use AcmeDemoServiceGreeterService;

class DemoController extends ActionController {
	
	   /**
	    * @var AcmeDemoServiceGreeterService
	    */
	   protected $greeterService;

	   /**
	     * @param AcmeDemoServiceGreeterService
	     */
	   public function injectGreeterService(GreeterService $greeterService) {
	   	    $this->greeterService = $greeterService;
	   }
	
    /**
     * @param string $name
     */
    public function helloAction($name) {
    	
    	   return $this->greeterService->greet($name);
    }
}
Property Injection

namespace TYPO3DemoController;

use TYPO3FLOW3Annotations as FLOW3;
use TYPO3FLOW3MVCControllerActionController;
use AcmeDemoServiceGreeterService;

class DemoController extends ActionController {
	
	   /**
	     * @var TYPO3DemoServiceGreeterService
	     * @FLOW3Inject
	     */
	   protected $greeterService;
	
    /**
      * @param string $name
      */
    public function helloAction($name) {
    	
    	     return $this->greeterService->greet($name);
    }
}
TEXT HERE
8. Sessions
TEXT HERE
TEXT HERE
TEXT HERE
TEXT HERE
9. Security
IPCSE12: Hands on FLOW3
TEXT HERE
IPCSE12: Hands on FLOW3
TEXT HERE
IPCSE12: Hands on FLOW3
Rossmann
• second biggest drug store
  in Germany
• 5,13 billion € turnover
• 31,000 employees



Customer Database
Amadeus
• world’s biggest
  e-ticket provider
• 217 markets
• 948 million billable
  transactions / year
• 2,7 billion € revenue

Social Media Suite
World of Textile
• textile print and finishing
• 30,000 articles / day
• 180 employees




E-Commerce Platform
Project X
                 FLOW3 1.0 FLOW3 1.1
transactions /
second
                    27        71
longest
transaction
                   1.06      0.38
shortest
transaction
                   0.19      0.08

memory peak      19,8 MB    5,1 MB
?
Thanks for having me!

Slides:     http://slideshare.net/robertlemke

Examples:   http://github.com/robertlemke

Blog:       http://robertlemke.com

Twitter:    @robertlemke

Feedback:   robert@typo3.org

FLOW3:      http://flow3.typo3.org

More Related Content

PDF
Hands on FLOW3 (DPC12)
PDF
2012 08-11-flow3-northeast-php
PDF
Getting Into FLOW3 (DPC12)
PDF
IPCSE12: Getting into FLOW3
PDF
Fluent Development with FLOW3 1.0
KEY
PHP 5.3
PDF
PPTX
Licão 13 functions
Hands on FLOW3 (DPC12)
2012 08-11-flow3-northeast-php
Getting Into FLOW3 (DPC12)
IPCSE12: Getting into FLOW3
Fluent Development with FLOW3 1.0
PHP 5.3
Licão 13 functions

Similar to IPCSE12: Hands on FLOW3 (20)

PDF
FLOW3 Tutorial - T3CON11 Frankfurt
PDF
Fluent Development with FLOW3 1.0
PDF
Getting Into FLOW3 (TYPO312CA)
PDF
Applications for the Enterprise with PHP (CPEurope)
PDF
Doctrine in FLOW3
PDF
TYPO3 Flow 2.0 Workshop T3BOARD13
PDF
TYPO3 Flow and the Joy of Development (FOSDEM 2013)
PPTX
Building maintainable javascript applications
PDF
Going to Mars with Groovy Domain-Specific Languages
PDF
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
PDF
The Beauty And The Beast Php N W09
PDF
TYPO3 Extension development using new Extbase framework
PDF
Php Documentor The Beauty And The Beast
PDF
The Beauty and the Beast
PDF
Gigigo Workshop - Create an iOS Framework, document it and not die trying
PDF
Groovy Domain Specific Languages - SpringOne2GX 2012
PDF
Inside DocBlox
KEY
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
PPTX
Speed up your developments with Symfony2
PDF
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
FLOW3 Tutorial - T3CON11 Frankfurt
Fluent Development with FLOW3 1.0
Getting Into FLOW3 (TYPO312CA)
Applications for the Enterprise with PHP (CPEurope)
Doctrine in FLOW3
TYPO3 Flow 2.0 Workshop T3BOARD13
TYPO3 Flow and the Joy of Development (FOSDEM 2013)
Building maintainable javascript applications
Going to Mars with Groovy Domain-Specific Languages
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
The Beauty And The Beast Php N W09
TYPO3 Extension development using new Extbase framework
Php Documentor The Beauty And The Beast
The Beauty and the Beast
Gigigo Workshop - Create an iOS Framework, document it and not die trying
Groovy Domain Specific Languages - SpringOne2GX 2012
Inside DocBlox
Groovy DSLs, from Beginner to Expert - Guillaume Laforge and Paul King - Spri...
Speed up your developments with Symfony2
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
Ad

More from Robert Lemke (20)

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

Recently uploaded (20)

PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Machine Learning_overview_presentation.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Electronic commerce courselecture one. Pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
Chapter 3 Spatial Domain Image Processing.pdf
MIND Revenue Release Quarter 2 2025 Press Release
“AI and Expert System Decision Support & Business Intelligence Systems”
Digital-Transformation-Roadmap-for-Companies.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Machine Learning_overview_presentation.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
The Rise and Fall of 3GPP – Time for a Sabbatical?
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
sap open course for s4hana steps from ECC to s4
Electronic commerce courselecture one. Pdf
Encapsulation_ Review paper, used for researhc scholars
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Mobile App Security Testing_ A Comprehensive Guide.pdf

IPCSE12: Hands on FLOW3

  • 2. Robert Lemke project founder of FLOW3 and TYPO3 “Phoenix” co-founder of the TYPO3 Association coach, coder, consultant 36 years old lives in Lübeck, Germany 1 wife, 2 daughters, 1 espresso machine likes drumming
  • 3. At a Glance FLOW3 is a web application platform • holistic concept for your apps • modular, extensible, package based • pedantically clean with focus on quality • puts a smile on developer’s faces • free & Open Source (LGPL v3) • backed by one of the largest Open Source projects
  • 4. Foundation for the Next Generation CMS TYPO3 “Phoenix” is the all-new Enterprise CMS • content repository, workspaces, versions, i18n, modular UI ... • powered by FLOW3 • compatible code base • use TYPO3 features in FLOW3 standalone apps as you like
  • 30. Tackling the Heart of Software Development /** Domain-Driven Design * A Book * * @FLOW3Scope(“protot ype”) * @FLOW3Entity A methodology which ... */ class Book { • results in rich domain models /** * @var string */ • provides a common language protected $title; across the project team /** * @var string */ • simplify the design of complex protected $isbn; applications /** * @var string */ protected $description ; FLOW3 is the first PHP framework /** tailored to Domain-Driven Design * @var integer */ protected $price;
  • 42. Object Management FLOW3's take on Dependency Injection • one of the first PHP implementations (started in 2006, improved ever since) • object management for the whole lifecycle of all objects • no unnecessary configuration if information can be gatered automatically (autowiring) • intuitive use and no bad magical surprises • fast! (like hardcoded or faster)
  • 43. Constructor Injection namespace AcmeDemoController; use TYPO3FLOW3MvcControllerActionController; use AcmeDemoServiceGreeterService; class DemoController extends ActionController { /** * @var AcmeDemoServiceGreeterService */ protected $greeterService; /** * @param AcmeDemoServiceGreeterService */ public function __construct(GreeterService $greeterService) { $this->greeterService = $greeterService; } /** * @param string $name */ public function helloAction($name) { return $this->greeterService->greet($name); } }
  • 44. Setter Injection namespace AcmeDemoController; use TYPO3FLOW3MVCControllerActionController; use AcmeDemoServiceGreeterService; class DemoController extends ActionController { /** * @var AcmeDemoServiceGreeterService */ protected $greeterService; /** * @param AcmeDemoServiceGreeterService */ public function injectGreeterService(GreeterService $greeterService) { $this->greeterService = $greeterService; } /** * @param string $name */ public function helloAction($name) { return $this->greeterService->greet($name); } }
  • 45. Property Injection namespace TYPO3DemoController; use TYPO3FLOW3Annotations as FLOW3; use TYPO3FLOW3MVCControllerActionController; use AcmeDemoServiceGreeterService; class DemoController extends ActionController { /** * @var TYPO3DemoServiceGreeterService * @FLOW3Inject */ protected $greeterService; /** * @param string $name */ public function helloAction($name) { return $this->greeterService->greet($name); } }
  • 58. Rossmann • second biggest drug store in Germany • 5,13 billion € turnover • 31,000 employees Customer Database
  • 59. Amadeus • world’s biggest e-ticket provider • 217 markets • 948 million billable transactions / year • 2,7 billion € revenue Social Media Suite
  • 60. World of Textile • textile print and finishing • 30,000 articles / day • 180 employees E-Commerce Platform
  • 61. Project X FLOW3 1.0 FLOW3 1.1 transactions / second 27 71 longest transaction 1.06 0.38 shortest transaction 0.19 0.08 memory peak 19,8 MB 5,1 MB
  • 62. ?
  • 63. Thanks for having me! Slides: http://slideshare.net/robertlemke Examples: http://github.com/robertlemke Blog: http://robertlemke.com Twitter: @robertlemke Feedback: robert@typo3.org FLOW3: http://flow3.typo3.org