T3CON09 Dallas: Hitchhikersguide

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites, 2 Groups & 1 Event

    T3CON09 Dallas: Hitchhikersguide - Presentation Transcript

    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
    7. Samstag, 18. April 2009
    8. 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 \\F3\\Blog\\Domain\\Model\\Post $post The post to display * @return void * @author Robert Lemke <robert@typo3.org> */ public function showAction(\\F3\\Blog\\Domain\\Model\\Post $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
    25. 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
    27. 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 i the check if user may delete phone book domain of a p export phone book entries hone b ook log phone book actions 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 share protected $description = ''; 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 \\F3\\MyPackage\\Model\\CustomerRepository */ protected $customerRepository; /** * Constructor * * @author Robert Lemke <robert@typo3.org> */ public function __construct() { $this->customerRepository = \\F3\\MyPackage\\Model\\CustomerRepository::getInstance(); } Hitchhiker's Guide to TYPO3 v5 Inspiring people to share Samstag, 18. April 2009
    48. Objects Class with Constructor Injection /** * @var \\F3\\MyPackage\\Model\\CustomerRepository */ protected $customerRepository; /** * Constructor * * @author Robert Lemke <robert@typo3.org> */ public function __construct(\\F3\\MyPackage\\Model\\CustomerRepository $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 \\F3\\MyPackage\\Model\\CustomerRepository */ protected $customerRepository; /** * Injects the customer repository * * @author Robert Lemke <robert@typo3.org> */ public function injectCustomerRepository(\\F3\\MyPackage\\Model\\CustomerRepository $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 \\F3\\MyPackage\\Model\\CustomerRepository * @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('F3\\Demo\\Customer', $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
    70. Samstag, 18. April 2009
    71. Samstag, 18. April 2009

    + Robert LemkeRobert Lemke, 7 months ago

    custom

    1185 views, 3 favs, 2 embeds more stats

    The next major version of TYPO3 is slowly appearing more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1185
      • 875 on SlideShare
      • 310 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 32
    Most viewed embeds
    • 308 views on http://flow3.typo3.org
    • 2 views on http://csit.uniud.it

    more

    All embeds
    • 308 views on http://flow3.typo3.org
    • 2 views on http://csit.uniud.it

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events