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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
10. 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.
["miha#j t$i#
k"s%ntmiha#j
i]
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
11. FLOW3 = Application Framework
Not just a collection of components or code snippet library
Comes with ready-to-go default configuration
Package based
Tailored to Domain-Driven Design
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
12. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
13. TYPO3 and FLOW3
FLOW3 acts as a reliable basis for any kind of web application
TYPO3 v5 is a package based on FLOW3
TYPO3 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
14. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
15. Getting Started
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
16. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
17. 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
FLOW3 1.0 alpha 1 release on June 1st
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
18. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
19. Model - View - Controller
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
20. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
21. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
22. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
23. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
24. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
25. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
26. DEMO
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
28. Validation
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
29. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
30. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
31. 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 FLOW3
*/ Inspiring people to
protected $description = '';
share
Mittwoch, 20. Mai 2009
32. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
33. DEMO
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
34. Security
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
35. Routing
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
36. Caching
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
37. Progress
Developing TYPO3 5.0 ...
Development with FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
38. DEMO
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
39. Playground
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
40. Things to play with
F3BLOG
Try out the Blog Example:
svn co https://svn.typo3.org/FLOW3/Distribution/branches/BlogExample/
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
41. Things to play with
TYPO3CR Admin
Play with persistence and watch your object in the TYPO3CR Admin
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
42. Things to play with
Testrunner
Experiment with Test-Driven Development and watch the tests in
FLOW3's test runner
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
43. 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 FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
44. Further Reading
http://flow3.typo3.org/about/principles/further-reading/
Beat
http://beat.typo3.org
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009
45. Questions
Hitchhiker's Guide to FLOW3 Inspiring people to
share
Mittwoch, 20. Mai 2009