SlideShare a Scribd company logo
1 of 71
Download to read offline
Hidee guesss!
                  T3CON09 – Big D, USA




Samstag, 18. April 2009
The History of FLOW3
                                (short version)




Samstag, 18. April 2009
The TYPO3 Family




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
TYPO3 and FLOW3
                          FLOW3 acts as a reliable basis for any kind of web application

                          TYPO3 v5 is a package based on FLOW3

                          Extensions are packages as well, all based on FLOW3


                          Packages can be used

                            as extensions for TYPO3

                            as libraries for standalone applications


                Hitchhiker's Guide to TYPO3 v5                                             Inspiring people to
                                                                                           share
Samstag, 18. April 2009
FLOW3 sub packages
                          AOP             Log           Reflection

                          Component       Monitor       Resource

                          Configuration    MVC           Session

                          Cache           Object        SignalSlot

                          Error           Package       Validation

                          Locale          Persistence   ... and more



                Hitchhiker's Guide to TYPO3 v5                Inspiring people to
                                                              share
Samstag, 18. April 2009
Samstag, 18. April 2009
Samstag, 18. April 2009
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.




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
FLOW3 = Application Framework
                          Not just a collection of components or code snippet library

                          Comes with ready-to-go default configuration

                          Package based

                          Runs with PHP 5.3 or later

                          Comes with a powerful JSR-283 based Content Repository




                Hitchhiker's Guide to TYPO3 v5                                          Inspiring people to
                                                                                        share
Samstag, 18. April 2009
Get the FLOW experience
                          Intuitive APIs

                          Readable source code (like a book)

                          Consistent naming for classes, methods and properties


                          Focus on the essential, the framework takes care of the infrastructure




                Hitchhiker's Guide to TYPO3 v5                                          Inspiring people to
                                                                                        share
Samstag, 18. April 2009
Getting Started




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Getting Started


                 Requirements
                          Some webserver (tested with Apache and IIS)

                          PHP 5.3RC1 or higher (see http://snaps.php.net/)

                            PHP extensions: zlib, PDO and PDO SQLite and the usual stuff

                          Some database (tested with SQLite, MySQL and Postgres)




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
Getting Started


                 Download
                          Currently available through Subversion

                            Checkout the FLOW3 Distribution:
                            svn co https://svn.typo3.org/FLOW3/distribution/trunk

                            or try the TYPO3 Distribution:
                            svn co https://svn.typo3.org/TYPO3v5/distribution/trunk

                          Nightly builds will follow as soon as we've set up our release mechanism




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
Getting Started


                 Grant File Permissions
                          The webserver needs

                            read access for all files of the distribution and

                            write access in the Public and Data directory

                          On Linux / Mac just call sudo ./fixpermissions.sh

                          On legacy operating systems: ask your system administrator




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
DEMO

                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Model - View - Controller




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
The MVC Pattern


                 Model
                          an object which contains data and business logic of a
                          certain domain

                          doesn't contain any information about the presentation of
                          that data, but rather defines the behaviour

                          in the FLOW3 project we prefer a special kind of model,
                          the Domain Model




                Hitchhiker's Guide to TYPO3 v5                                        Inspiring people to
                                                                                      share
Samstag, 18. April 2009
The MVC Pattern


                 View
                          represents the display of the model on the web or another
                          output channel

                          views only display data, they don't build or modify it




                Hitchhiker's Guide to TYPO3 v5                                        Inspiring people to
                                                                                      share
Samstag, 18. April 2009
The MVC Pattern


                 Controller
                          reacts on user input, selects and manipulates the model as
                          accordingly

                          selects a view and passes it the prepared model for
                          rendering




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
MVC


                 Action Controller
                          An action controller

                            accepts a request

                            evaluates arguments

                            calls the action defined in the request

                            and adds output to the response




                Hitchhiker's Guide to TYPO3 v5                       Inspiring people to
                                                                     share
Samstag, 18. April 2009
MVC


                 Action Controller: Important Methods
                          Actions - methods just need an "Action" suffix:
                          public function indexAction() { … }
                          public function deleteAction() { … }

                          Initialization for the whole controller:
                          public function initializeController() { … }

                          Initialization before any action is called:
                          public function initializeAction() { … }
                          public function initializeXYAction() { … }




                Hitchhiker's Guide to TYPO3 v5                             Inspiring people to
                                                                           share
Samstag, 18. April 2009
MVC


                 Action Arguments
                          Arguments are defined by declaring them in the action method

                          Argument data types are defined by type hint and documentation
                          /**
                           * Action that displays one single post
                           *
                           * @param F3BlogDomainModelPost $post The post to display
                           * @return void
                           * @author Robert Lemke <robert@typo3.org>
                           */
                          public function showAction(F3BlogDomainModelPost $post) {




                Hitchhiker's Guide to TYPO3 v5                                             Inspiring people to
                                                                                           share
Samstag, 18. April 2009
DEMO

                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Samstag, 18. April 2009
Domain Driven Design
                          A domain is the activity or business of the user

                          Domain Driven Design is about

                            focussing on the domain and domain logic

                            accurately mapping the domain concepts to software

                            forming a ubiquitous language among the project members




                Hitchhiker's Guide to TYPO3 v5                                        Inspiring people to
                                                                                  share
Samstag, 18. April 2009
Samstag, 18. April 2009
Domain Driven Design


                 Ubiquitous language
                          The common vocabulary is an important prerequisite
                          for successful collaboration

                          Use the same words for discussion, modeling, development
                          and documentation




                Hitchhiker's Guide to TYPO3 v5                                       Inspiring people to
                                                                                     share
Samstag, 18. April 2009
Domain Driven Design


                 Phone Book Domain Model




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Domain Driven Design


                 Phone Book Domain Model




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Domain Driven Design


                 More phone book actions
                          show phone book entries

                          check if user may delete phone book entry

                          export phone book entries

                          log phone book actions




                Hitchhiker's Guide to TYPO3 v5                        Inspiring people to
                                                                      share
Samstag, 18. April 2009
!
                 Domain Driven Design


                 More phone book actions
                          show phone book entries
                                                         notentryn
                          check if user may delete phone book  i the
                          export phone book entries      of a p        domain
                                                                   hone b
                          log phone book actions                          ook



                Hitchhiker's Guide to TYPO3 v5                        Inspiring people to
                                                                      share
Samstag, 18. April 2009
Domain Driven Design


                 Layered Architecture

                                         View
                          Presentation   Controller

                                         Application Logic (Service Layer)
                            Domain       Domain Model (Domain Layer)

                                         Data Mapper (part of Content Repository)
                          Data source    Data Source Abstraction




                Hitchhiker's Guide to TYPO3 v5                                      Inspiring people to
                                                                                    share
Samstag, 18. April 2009
Domain Driven Design


                 Layered Architecture

                                         View
                          Presentation   Controller

                                         Application Logic (Service Layer)
                            Domain       Domain Model (Domain Layer)

                                         Data Mapper (part of Content Repository)
                          Data source    Data Source Abstraction




                Hitchhiker's Guide to TYPO3 v5                                      Inspiring people to
                                                                                    share
Samstag, 18. April 2009
Validation




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Validating Arguments
                          All arguments passed to an Action Controller are automatically validated

                          White List policy: Only registered arguments are available

                          Accessing the $_GET and $_POST super globals is dangerous, dirty, deprecated
                          and will probably be intercepted in the future




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
Validating Arguments
                          FLOW3 comes with a bunch of built in validators:

                            AlphaNumeric, EmailAddress, Float, Integer, NotEmpty, Number,
                            NumberRange, RegularExpression, UUID, Text

                          Custom validators can be created (especially for Domain Models)

                          All validators can be chained (and nested)




                Hitchhiker's Guide to TYPO3 v5                                        Inspiring people to
                                                                                      share
Samstag, 18. April 2009
Validation Rules Definition
                          All validation rules are defined by annotations in place

                          Additional rules may be defined programmatically
                      class Blog {

                          /**
                           * The blog's name. Also acts as the identifier.
                           *
                           * @var string
                           * @validate Alphanumeric, Length(minimum = 3, maximum = 50)
                           * @identity
                           */
                          protected $name = '';

                          /**
                           * A short description of the blog
                           *
                           * @var string
                           * @validate Text, Length(maximum = 150)

                Hitchhiker's Guide to TYPO3 v5
                           */                                                            Inspiring people to
                          protected $description = '';
                                                                                         share
Samstag, 18. April 2009
Validation Rules Definition


                          /**
                            * Create action for this controller.
                            *
                            * @param string $emailAddress
                            * @return string The rendered view
                            * @author Robert Lemke <robert@typo3.org>
                            * @validate $emailAddress EmailAddress
                            */
                          public function createAction($emailAddress) {
                          }




                Hitchhiker's Guide to TYPO3 v5                            Inspiring people to
                                                                          share
Samstag, 18. April 2009
DEMO

                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Security




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Objects




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Objects


                 Managed Objects
                           The lifecycle of an object and the combination of active
                           objects is managed by the Object Manager

                           The behavior of objects in FLOW3 is configurable




                Hitchhiker's Guide to TYPO3 v5                                        Inspiring people to
                                                                                      share
Samstag, 18. April 2009
Objects


                 Playing with building blocks
                           The combination of objects used is configurable
                           (orchestration)

                           The less classes know about each other the easier it is to
                           reuse them in a variety of contexts

                           Create your own LEGO set by creating cleanly separated,
                           decoupled classes!




                Hitchhiker's Guide to TYPO3 v5                                          Inspiring people to
                                                                                        share
Samstag, 18. April 2009
Objects


                 Class Dependencies
                           Classes seldomly come alone

                           Classes depend on other classes which depend on other
                           classes which ...

                           Problem:

                             Classes explicitly refer to other classes:
                             $phoneBookManager = new PhoneBookManager




                Hitchhiker's Guide to TYPO3 v5                                     Inspiring people to
                                                                                   share
Samstag, 18. April 2009
Objects


                 Dependency Injection
                           A class doesn't ask for the instance of another class but
                           gets it injected

                           This methodology is referred to as the
                           "Hollywood Principle":
                           "Don't call us, we'll call you"

                           Enforces loose coupling and high cohesion

                           Makes you a better programmer




                Hitchhiker's Guide to TYPO3 v5                                         Inspiring people to
                                                                                       share
Samstag, 18. April 2009
Objects


                 Constructor without Dependency Injection
                          /**
                           * @var F3MyPackageModelCustomerRepository
                           */
                          protected $customerRepository;

                          /**
                            * Constructor
                            *
                            * @author Robert Lemke <robert@typo3.org>
                            */
                          public function __construct() {
                               $this->customerRepository = F3MyPackageModelCustomerRepository::getInstance();
                          }




                Hitchhiker's Guide to TYPO3 v5                                                             Inspiring people to
                                                                                                           share
Samstag, 18. April 2009
Objects


                 Class with Constructor Injection
                          /**
                           * @var F3MyPackageModelCustomerRepository
                           */
                          protected $customerRepository;

                          /**
                            * Constructor
                            *
                            * @author Robert Lemke <robert@typo3.org>
                            */
                          public function __construct(F3MyPackageModelCustomerRepository $customerRepository) {
                               $this->customerRepository = $customerRepository;
                          }




                Hitchhiker's Guide to TYPO3 v5                                                            Inspiring people to
                                                                                                         share
Samstag, 18. April 2009
Objects


                 Class with Setter Injection
                          /**
                           * @var F3MyPackageModelCustomerRepository
                           */
                          protected $customerRepository;

                          /**
                            * Injects the customer repository
                            *
                            * @author Robert Lemke <robert@typo3.org>
                            */
                          public function injectCustomerRepository(F3MyPackageModelCustomerRepository $customerRepository) {
                               $this->customerRepository = $customerRepository;
                          }




                Hitchhiker's Guide to TYPO3 v5                                                            Inspiring people to
                                                                                                         share
Samstag, 18. April 2009
Objects


                 Class with Property Injection

                          /**
                           * @var F3MyPackageModelCustomerRepository
                           * @inject
                           */
                          protected $customerRepository;




                Hitchhiker's Guide to TYPO3 v5                             Inspiring people to
                                                                           share
Samstag, 18. April 2009
Objects


                 Autowiring
                           FLOW3's framework tries to autowire constructor arguments,
                           arguments of inject* methods and annotated properties

                           The type of the component to be injected is determined by
                           the argument type (type hinting)

                           Autowiring does not work with Setter Injection through
                           regular setters (set* methods)

                           Dependencies are only autowired if no argument is passed
                           explicitly



                Hitchhiker's Guide to TYPO3 v5                                          Inspiring people to
                                                                                        share
Samstag, 18. April 2009
Objects


                 Fetching components manually
                           Although Dependency Injection is strongly recommended, there
                           might be cases in which objects need to be created or retrieved
                           manually

                           Use the getComponent() method in these cases.

                           $component = $componentManager->getComponent($componentName, $arg1, $arg2, ...);




                Hitchhiker's Guide to TYPO3 v5                                          Inspiring people to
                                                                                        share
Samstag, 18. April 2009
Objects


                 Object Scope
                           Objects always live in a certain scope

                           Currently supported scopes are:

                             Singleton - Only one instance exists during one script run

                             Prototype - Multiple instances exist




                Hitchhiker's Guide to TYPO3 v5                                            Inspiring people to
                                                                                          share
Samstag, 18. April 2009
Objects


                 Object Scope
                           The scope can be defined through

                             a @scope annotation in the class (recommended)

                             through the object configuration in a
                             Objects.yaml file

                           The default scope is "Singleton"




                Hitchhiker's Guide to TYPO3 v5                                Inspiring people to
                                                                              share
Samstag, 18. April 2009
Objects


                 Creating Prototypes
                           Dependency Injection can be used in almost any case,
                           there's no need to call getObject()

                           But what if you need to instantiate a class within a
                           method?




                Hitchhiker's Guide to TYPO3 v5                                    Inspiring people to
                                                                                  share
Samstag, 18. April 2009
Objects


                 Creating Prototypes
                              Solution: Call the Object Factory's createObject() method
                          /**
                            * Create action for this controller.
                            *
                            * @param string $emailAddress
                            * @return string The rendered view
                            * @author Robert Lemke <robert@typo3.org>
                            * @validate $emailAddress EmailAddress
                            */
                          public function createAction($emailAddress) {
                               $customer = $this->objectFactory->create('F3DemoCustomer', $emailAddress);
                               $this->customerRepository->add($customer);
                          }




                Hitchhiker's Guide to TYPO3 v5                                                                Inspiring people to
                                                                                                              share
Samstag, 18. April 2009
REST Services




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Representational State Transfer
                          Style of network architecture principles

                          Mostly for building web services

                          Introduced in 2000 by Roy Fielding




                Hitchhiker's Guide to TYPO3 v5                       Inspiring people to
                                                                     share
Samstag, 18. April 2009
RESTful Principles
                          Resource-Oriented

                          Uniform Interface

                          Stateless

                          Accessible through a uniform interface




                Hitchhiker's Guide to TYPO3 v5                     Inspiring people to
                                                                   share
Samstag, 18. April 2009
DEMO

                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Progress

                             Developing TYPO3 5.0 ...




                Development with FLOW3                  Inspiring people to
                                                        share
Samstag, 18. April 2009
DEMO

                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Playground




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Things to play with


                 F3BLOG
                          Try out the Blog Example:
                          svn co https://svn.typo3.org/FLOW3/Distribution/branches/BlogExample/




                Hitchhiker's Guide to TYPO3 v5                              Inspiring people to
                                                                            share
Samstag, 18. April 2009
Things to play with


                 TYPO3CR Admin
                          Play with persistence and watch your object in the TYPO3CR Admin




                Hitchhiker's Guide to TYPO3 v5                                        Inspiring people to
                                                                                     share
Samstag, 18. April 2009
Things to play with


                 Testrunner
                          Experiment with Test-Driven Development and watch the tests in
                          FLOW3's test runner




                Hitchhiker's Guide to TYPO3 v5                                       Inspiring people to
                                                                                     share
Samstag, 18. April 2009
Links
                          FLOW3 Website
                          http://flow3.typo3.org

                          TYPO3 Forge
                          http://forge.typo3.org

                          Coding Guidelines
                          http://flow3.typo3.org/documentation/coding-guidelines/

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



                Hitchhiker's Guide to TYPO3 v5                                      Inspiring people to
                                                                                    share
Samstag, 18. April 2009
Further Reading
                 http://flow3.typo3.org/about/principles/further-reading/

                 Beat
                 http://beat.typo3.org




                Hitchhiker's Guide to TYPO3 v5                Inspiring people to
                                                              share
Samstag, 18. April 2009
Questions




                Hitchhiker's Guide to TYPO3 v5   Inspiring people to
                                                 share
Samstag, 18. April 2009
Samstag, 18. April 2009
Samstag, 18. April 2009

More Related Content

Similar to T3CON09 Dallas: Hitchhikersguide

T3CON11-SF Getting started in TYPO3
T3CON11-SF Getting started in TYPO3T3CON11-SF Getting started in TYPO3
T3CON11-SF Getting started in TYPO3busynoggin
 
Hitchhiker’s Guide to FLOW3
Hitchhiker’s Guide to FLOW3Hitchhiker’s Guide to FLOW3
Hitchhiker’s Guide to FLOW3Robert Lemke
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
JISC CETIS and UKOER3
JISC CETIS and UKOER3JISC CETIS and UKOER3
JISC CETIS and UKOER3Phil Barker
 
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0Peter Elst
 
TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013die.agilen GmbH
 
Creating Clean Code with AOP (WebExpo 2010)
Creating Clean Code with AOP (WebExpo 2010)Creating Clean Code with AOP (WebExpo 2010)
Creating Clean Code with AOP (WebExpo 2010)Robert Lemke
 
T3CON09 Dallas Keynote
T3CON09 Dallas KeynoteT3CON09 Dallas Keynote
T3CON09 Dallas KeynoteRobert Lemke
 
Development with TYPO3 5.0
Development with TYPO3 5.0Development with TYPO3 5.0
Development with TYPO3 5.0Robert Lemke
 
T3DD13 - Automated deployment for TYPO3 CMS (Workshop)
T3DD13 - Automated deployment for TYPO3 CMS (Workshop)T3DD13 - Automated deployment for TYPO3 CMS (Workshop)
T3DD13 - Automated deployment for TYPO3 CMS (Workshop)Tobias Liebig
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPKarsten Dambekalns
 
Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...
Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...
Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...Ingo Renner
 
Performance optimization for a TYPO3 website
Performance optimization for a TYPO3 websitePerformance optimization for a TYPO3 website
Performance optimization for a TYPO3 websiteAliénor.net
 
2012 08-11-flow3-northeast-php
2012 08-11-flow3-northeast-php2012 08-11-flow3-northeast-php
2012 08-11-flow3-northeast-phpJochen Rau
 
Enterprise CMS - TYPO3
Enterprise CMS - TYPO3Enterprise CMS - TYPO3
Enterprise CMS - TYPO3Jozef Spisiak
 
Common asp.net design patterns aspconf2012
Common asp.net design patterns aspconf2012Common asp.net design patterns aspconf2012
Common asp.net design patterns aspconf2012Steven Smith
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at FosdemPharo
 
Installing tensorflow object detection on raspberry pi
Installing tensorflow object detection on raspberry piInstalling tensorflow object detection on raspberry pi
Installing tensorflow object detection on raspberry piSeong-Hun Choe
 

Similar to T3CON09 Dallas: Hitchhikersguide (20)

TYPO3 4.6 --rebase Overview
TYPO3 4.6 --rebase OverviewTYPO3 4.6 --rebase Overview
TYPO3 4.6 --rebase Overview
 
T3CON11-SF Getting started in TYPO3
T3CON11-SF Getting started in TYPO3T3CON11-SF Getting started in TYPO3
T3CON11-SF Getting started in TYPO3
 
Hitchhiker’s Guide to FLOW3
Hitchhiker’s Guide to FLOW3Hitchhiker’s Guide to FLOW3
Hitchhiker’s Guide to FLOW3
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
JISC CETIS and UKOER3
JISC CETIS and UKOER3JISC CETIS and UKOER3
JISC CETIS and UKOER3
 
Another Test
Another TestAnother Test
Another Test
 
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
SkillsMatter - In-the-Brain session - What's new in ActionScript 3.0
 
TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013TYPO3 Flow 2.0 in the field - webtech Conference 2013
TYPO3 Flow 2.0 in the field - webtech Conference 2013
 
Creating Clean Code with AOP (WebExpo 2010)
Creating Clean Code with AOP (WebExpo 2010)Creating Clean Code with AOP (WebExpo 2010)
Creating Clean Code with AOP (WebExpo 2010)
 
T3CON09 Dallas Keynote
T3CON09 Dallas KeynoteT3CON09 Dallas Keynote
T3CON09 Dallas Keynote
 
Development with TYPO3 5.0
Development with TYPO3 5.0Development with TYPO3 5.0
Development with TYPO3 5.0
 
T3DD13 - Automated deployment for TYPO3 CMS (Workshop)
T3DD13 - Automated deployment for TYPO3 CMS (Workshop)T3DD13 - Automated deployment for TYPO3 CMS (Workshop)
T3DD13 - Automated deployment for TYPO3 CMS (Workshop)
 
Implementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHPImplementing a JSR-283 Content Repository in PHP
Implementing a JSR-283 Content Repository in PHP
 
Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...
Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...
Open Source Enterprise Search meets Open Source Enterprise CMS - Apache Solr ...
 
Performance optimization for a TYPO3 website
Performance optimization for a TYPO3 websitePerformance optimization for a TYPO3 website
Performance optimization for a TYPO3 website
 
2012 08-11-flow3-northeast-php
2012 08-11-flow3-northeast-php2012 08-11-flow3-northeast-php
2012 08-11-flow3-northeast-php
 
Enterprise CMS - TYPO3
Enterprise CMS - TYPO3Enterprise CMS - TYPO3
Enterprise CMS - TYPO3
 
Common asp.net design patterns aspconf2012
Common asp.net design patterns aspconf2012Common asp.net design patterns aspconf2012
Common asp.net design patterns aspconf2012
 
Pharo3 at Fosdem
Pharo3 at FosdemPharo3 at Fosdem
Pharo3 at Fosdem
 
Installing tensorflow object detection on raspberry pi
Installing tensorflow object detection on raspberry piInstalling tensorflow object detection on raspberry pi
Installing tensorflow object detection on raspberry pi
 

More from Robert Lemke

Neos Content Repository – Git for content
Neos Content Repository – Git for contentNeos Content Repository – Git for content
Neos Content Repository – Git for contentRobert Lemke
 
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 PHPRobert Lemke
 
Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 
Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Robert Lemke
 
GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022Robert Lemke
 
OpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowOpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowRobert Lemke
 
Neos Conference 2019 Keynote
Neos Conference 2019 KeynoteNeos Conference 2019 Keynote
Neos Conference 2019 KeynoteRobert Lemke
 
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)Robert Lemke
 
Neos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteNeos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteRobert Lemke
 
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 CQRSRobert Lemke
 
Neos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteNeos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteRobert Lemke
 
IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes Robert Lemke
 
IPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersIPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersRobert Lemke
 
Docker in Production - IPC 2016
Docker in Production - IPC 2016Docker in Production - IPC 2016
Docker in Production - IPC 2016Robert Lemke
 
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)Robert Lemke
 
The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)The Neos Brand (Inspiring Conference 2016)
The Neos Brand (Inspiring Conference 2016)Robert Lemke
 
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)Robert Lemke
 
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!Robert Lemke
 
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!Robert Lemke
 
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 HHRobert Lemke
 

More from 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
 

T3CON09 Dallas: Hitchhikersguide

  • 1. Hidee guesss! T3CON09 – Big D, USA Samstag, 18. April 2009
  • 2. The History of FLOW3 (short version) Samstag, 18. April 2009
  • 3. The TYPO3 Family Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 4. Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 5. TYPO3 and FLOW3 FLOW3 acts as a reliable basis for any kind of web application TYPO3 v5 is a package based on FLOW3 Extensions are packages as well, all based on FLOW3 Packages can be used as extensions for TYPO3 as libraries for standalone applications Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 6. FLOW3 sub packages AOP Log Reflection Component Monitor Resource Configuration MVC Session Cache Object SignalSlot Error Package Validation Locale Persistence ... and more Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 9. 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. Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 10. FLOW3 = Application Framework Not just a collection of components or code snippet library Comes with ready-to-go default configuration Package based Runs with PHP 5.3 or later Comes with a powerful JSR-283 based Content Repository Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 11. Get the FLOW experience Intuitive APIs Readable source code (like a book) Consistent naming for classes, methods and properties Focus on the essential, the framework takes care of the infrastructure Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 12. Getting Started Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 13. Getting Started Requirements Some webserver (tested with Apache and IIS) PHP 5.3RC1 or higher (see http://snaps.php.net/) PHP extensions: zlib, PDO and PDO SQLite and the usual stuff Some database (tested with SQLite, MySQL and Postgres) Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 14. Getting Started Download Currently available through Subversion Checkout the FLOW3 Distribution: svn co https://svn.typo3.org/FLOW3/distribution/trunk or try the TYPO3 Distribution: svn co https://svn.typo3.org/TYPO3v5/distribution/trunk Nightly builds will follow as soon as we've set up our release mechanism Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 15. Getting Started Grant File Permissions The webserver needs read access for all files of the distribution and write access in the Public and Data directory On Linux / Mac just call sudo ./fixpermissions.sh On legacy operating systems: ask your system administrator Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 16. DEMO Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 17. Model - View - Controller Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 18. The MVC Pattern Model an object which contains data and business logic of a certain domain doesn't contain any information about the presentation of that data, but rather defines the behaviour in the FLOW3 project we prefer a special kind of model, the Domain Model Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 19. The MVC Pattern View represents the display of the model on the web or another output channel views only display data, they don't build or modify it Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 20. The MVC Pattern Controller reacts on user input, selects and manipulates the model as accordingly selects a view and passes it the prepared model for rendering Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 21. MVC Action Controller An action controller accepts a request evaluates arguments calls the action defined in the request and adds output to the response Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 22. MVC Action Controller: Important Methods Actions - methods just need an "Action" suffix: public function indexAction() { … } public function deleteAction() { … } Initialization for the whole controller: public function initializeController() { … } Initialization before any action is called: public function initializeAction() { … } public function initializeXYAction() { … } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 23. MVC Action Arguments Arguments are defined by declaring them in the action method Argument data types are defined by type hint and documentation /** * Action that displays one single post * * @param F3BlogDomainModelPost $post The post to display * @return void * @author Robert Lemke <robert@typo3.org> */ public function showAction(F3BlogDomainModelPost $post) { Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 24. DEMO Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 26. Domain Driven Design A domain is the activity or business of the user Domain Driven Design is about focussing on the domain and domain logic accurately mapping the domain concepts to software forming a ubiquitous language among the project members Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 28. Domain Driven Design Ubiquitous language The common vocabulary is an important prerequisite for successful collaboration Use the same words for discussion, modeling, development and documentation Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 29. Domain Driven Design Phone Book Domain Model Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 30. Domain Driven Design Phone Book Domain Model Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 31. Domain Driven Design More phone book actions show phone book entries check if user may delete phone book entry export phone book entries log phone book actions Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 32. ! Domain Driven Design More phone book actions show phone book entries notentryn check if user may delete phone book i the export phone book entries of a p domain hone b log phone book actions ook Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 33. Domain Driven Design Layered Architecture View Presentation Controller Application Logic (Service Layer) Domain Domain Model (Domain Layer) Data Mapper (part of Content Repository) Data source Data Source Abstraction Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 34. Domain Driven Design Layered Architecture View Presentation Controller Application Logic (Service Layer) Domain Domain Model (Domain Layer) Data Mapper (part of Content Repository) Data source Data Source Abstraction Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 35. Validation Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 36. Validating Arguments All arguments passed to an Action Controller are automatically validated White List policy: Only registered arguments are available Accessing the $_GET and $_POST super globals is dangerous, dirty, deprecated and will probably be intercepted in the future Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 37. Validating Arguments FLOW3 comes with a bunch of built in validators: AlphaNumeric, EmailAddress, Float, Integer, NotEmpty, Number, NumberRange, RegularExpression, UUID, Text Custom validators can be created (especially for Domain Models) All validators can be chained (and nested) Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 38. Validation Rules Definition All validation rules are defined by annotations in place Additional rules may be defined programmatically class Blog { /** * The blog's name. Also acts as the identifier. * * @var string * @validate Alphanumeric, Length(minimum = 3, maximum = 50) * @identity */ protected $name = ''; /** * A short description of the blog * * @var string * @validate Text, Length(maximum = 150) Hitchhiker's Guide to TYPO3 v5 */ Inspiring people to protected $description = ''; share Samstag, 18. April 2009
  • 39. Validation Rules Definition /** * Create action for this controller. * * @param string $emailAddress * @return string The rendered view * @author Robert Lemke <robert@typo3.org> * @validate $emailAddress EmailAddress */ public function createAction($emailAddress) { } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 40. DEMO Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 41. Security Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 42. Objects Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 43. Objects Managed Objects The lifecycle of an object and the combination of active objects is managed by the Object Manager The behavior of objects in FLOW3 is configurable Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 44. Objects Playing with building blocks The combination of objects used is configurable (orchestration) The less classes know about each other the easier it is to reuse them in a variety of contexts Create your own LEGO set by creating cleanly separated, decoupled classes! Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 45. Objects Class Dependencies Classes seldomly come alone Classes depend on other classes which depend on other classes which ... Problem: Classes explicitly refer to other classes: $phoneBookManager = new PhoneBookManager Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 46. Objects Dependency Injection A class doesn't ask for the instance of another class but gets it injected This methodology is referred to as the "Hollywood Principle": "Don't call us, we'll call you" Enforces loose coupling and high cohesion Makes you a better programmer Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 47. Objects Constructor without Dependency Injection /** * @var F3MyPackageModelCustomerRepository */ protected $customerRepository; /** * Constructor * * @author Robert Lemke <robert@typo3.org> */ public function __construct() { $this->customerRepository = F3MyPackageModelCustomerRepository::getInstance(); } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 48. Objects Class with Constructor Injection /** * @var F3MyPackageModelCustomerRepository */ protected $customerRepository; /** * Constructor * * @author Robert Lemke <robert@typo3.org> */ public function __construct(F3MyPackageModelCustomerRepository $customerRepository) { $this->customerRepository = $customerRepository; } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 49. Objects Class with Setter Injection /** * @var F3MyPackageModelCustomerRepository */ protected $customerRepository; /** * Injects the customer repository * * @author Robert Lemke <robert@typo3.org> */ public function injectCustomerRepository(F3MyPackageModelCustomerRepository $customerRepository) { $this->customerRepository = $customerRepository; } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 50. Objects Class with Property Injection /** * @var F3MyPackageModelCustomerRepository * @inject */ protected $customerRepository; Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 51. Objects Autowiring FLOW3's framework tries to autowire constructor arguments, arguments of inject* methods and annotated properties The type of the component to be injected is determined by the argument type (type hinting) Autowiring does not work with Setter Injection through regular setters (set* methods) Dependencies are only autowired if no argument is passed explicitly Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 52. Objects Fetching components manually Although Dependency Injection is strongly recommended, there might be cases in which objects need to be created or retrieved manually Use the getComponent() method in these cases. $component = $componentManager->getComponent($componentName, $arg1, $arg2, ...); Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 53. Objects Object Scope Objects always live in a certain scope Currently supported scopes are: Singleton - Only one instance exists during one script run Prototype - Multiple instances exist Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 54. Objects Object Scope The scope can be defined through a @scope annotation in the class (recommended) through the object configuration in a Objects.yaml file The default scope is "Singleton" Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 55. Objects Creating Prototypes Dependency Injection can be used in almost any case, there's no need to call getObject() But what if you need to instantiate a class within a method? Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 56. Objects Creating Prototypes Solution: Call the Object Factory's createObject() method /** * Create action for this controller. * * @param string $emailAddress * @return string The rendered view * @author Robert Lemke <robert@typo3.org> * @validate $emailAddress EmailAddress */ public function createAction($emailAddress) { $customer = $this->objectFactory->create('F3DemoCustomer', $emailAddress); $this->customerRepository->add($customer); } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 57. REST Services Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 58. Representational State Transfer Style of network architecture principles Mostly for building web services Introduced in 2000 by Roy Fielding Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 59. RESTful Principles Resource-Oriented Uniform Interface Stateless Accessible through a uniform interface Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 60. DEMO Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 61. Progress Developing TYPO3 5.0 ... Development with FLOW3 Inspiring people to share Samstag, 18. April 2009
  • 62. DEMO Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 63. Playground Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 64. Things to play with F3BLOG Try out the Blog Example: svn co https://svn.typo3.org/FLOW3/Distribution/branches/BlogExample/ Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 65. Things to play with TYPO3CR Admin Play with persistence and watch your object in the TYPO3CR Admin Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 66. Things to play with Testrunner Experiment with Test-Driven Development and watch the tests in FLOW3's test runner Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 67. Links FLOW3 Website http://flow3.typo3.org TYPO3 Forge http://forge.typo3.org Coding Guidelines http://flow3.typo3.org/documentation/coding-guidelines/ Further Reading http://flow3.typo3.org/about/principles/further-reading/ Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 68. Further Reading http://flow3.typo3.org/about/principles/further-reading/ Beat http://beat.typo3.org Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
  • 69. Questions Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009