• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
T3CON09 Dallas: Hitchhikersguide
 

T3CON09 Dallas: Hitchhikersguide

on

  • 812 views

The next major version of TYPO3 is slowly appearing at the horizon. Being in the works for two years now, the TYPO3 v5 core team mainly focused on the development of the foundation for the next ...

The next major version of TYPO3 is slowly appearing at the horizon. Being in the works for two years now, the TYPO3 v5 core team mainly focused on the development of the foundation for the next generation CMS. As an offspring from the TYPO3 development, a completely new application framework has been developed. "FLOW3" has become a modern, powerful and sophisticated web application framework with many important features tailored for the next generation TYPO3 CMS and stand-alone enterprise applications.

In this session I’ll took the audience on a tour through TYPO3 v5 and FLOW3 how it’s today and give you an impression of how you’ll be able to use it in the near future.

Statistics

Views

Total Views
812
Views on SlideShare
795
Embed Views
17

Actions

Likes
0
Downloads
6
Comments
0

2 Embeds 17

http://flow3.typo3.org 9
http://flow.typo3.org 8

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    T3CON09 Dallas: Hitchhikersguide T3CON09 Dallas: Hitchhikersguide Presentation Transcript

    • Hidee guesss! T3CON09 – Big D, USASamstag, 18. April 2009
    • The History of FLOW3 (short version)Samstag, 18. April 2009
    • The TYPO3 Family Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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. Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Getting Started Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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) Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 weve set up our release mechanism Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • DEMO Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Model - View - Controller Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • The MVC Pattern Model an object which contains data and business logic of a certain domain doesnt 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 dont build or modify it Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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() { … } Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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) { Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • DEMO Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Domain Driven Design Phone Book Domain Model Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Domain Driven Design Phone Book Domain Model Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Validation Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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) Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Validation Rules Definition All validation rules are defined by annotations in place Additional rules may be defined programmatically class Blog { /** * The blogs 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) Hitchhikers Guide to TYPO3 v5 */ Inspiring people to protected $description = ; shareSamstag, 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) { } Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • DEMO Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Security Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Objects Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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! Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Objects Dependency Injection A class doesnt ask for the instance of another class but gets it injected This methodology is referred to as the "Hollywood Principle": "Dont call us, well call you" Enforces loose coupling and high cohesion Makes you a better programmer Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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(); } Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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; } Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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; } Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Objects Class with Property Injection /** * @var F3MyPackageModelCustomerRepository * @inject */ protected $customerRepository; Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Objects Autowiring FLOW3s 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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, ...); Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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 Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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" Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Objects Creating Prototypes Dependency Injection can be used in almost any case, theres no need to call getObject() But what if you need to instantiate a class within a method? Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Objects Creating Prototypes Solution: Call the Object Factorys 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); } Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • REST Services Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Representational State Transfer Style of network architecture principles Mostly for building web services Introduced in 2000 by Roy Fielding Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • RESTful Principles Resource-Oriented Uniform Interface Stateless Accessible through a uniform interface Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • DEMO Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Progress Developing TYPO3 5.0 ... Development with FLOW3 Inspiring people to shareSamstag, 18. April 2009
    • DEMO Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Playground Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Things to play with F3BLOG Try out the Blog Example: svn co https://svn.typo3.org/FLOW3/Distribution/branches/BlogExample/ Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Things to play with TYPO3CR Admin Play with persistence and watch your object in the TYPO3CR Admin Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Things to play with Testrunner Experiment with Test-Driven Development and watch the tests in FLOW3s test runner Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 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/ Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Further Reading http://flow3.typo3.org/about/principles/further-reading/ Beat http://beat.typo3.org Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Questions Hitchhikers Guide to TYPO3 v5 Inspiring people to shareSamstag, 18. April 2009
    • Samstag, 18. April 2009
    • Samstag, 18. April 2009