FLOW3 is a PHP-based application framework. It is especially well-suited for enterprise-grade applications and explicitly supports Domain-Driven Design, a powerful software design philosophy. Convention over configuration, Test-Driven Development, Continuous Integration and an easy-to-read source code are other important principles we follow for the development of FLOW3.
Although we created FLOW3 as the foundation for the TYPO3 Content Management System its approach is general enough to be useful as a basis for any other PHP application. We're happy to share the FLOW3 framework with the whole PHP community and are looking forward to the hundreds of new features and enhancements contributed as packages by other enthusiastic developers. In fact most of the packages which will be developed for the TYPO3 CMS can be used in any other FLOW3-based application. In essence this reflects the vision of the TYPO3 project: "Inspiring People to Share".
This reference describes all features of FLOW3 and provides you with in-depth information. If you'd like to get a feeling for FLOW3 and get started quickly, we suggest that you try out our Getting Started tutorial first.
Please note that FLOW3 is still under heavy development. Although we hope that the documentation is at least accurate and up to date, it is by no means complete and most likely not proof-read. If you find errors or would like to help us improving the documentation, we're happy to hear from you on our mailing list!
The FLOW3 framework is composed of a the following submodules:
The FLOW3 bootstrap takes care of configuring and initializing the whole framework.
The Package Manager allows you to download, install, configure and uninstall packages.
The Component Manager is in charge of building, caching and combining objects, which in this context are called components.
The Configuration Manager reads and cascades various kinds of configuration from different sources and provides access to it.
The Resource Manager contains functions for providing, caching, securing and retrieving resources.
The MVC Framework takes care of requests and responses and provides you with a powerful, easy-to use Model-View-Controller implementation.
The Cache framework provides different kinds of caches with can be combined with a selection of cache backends.
The Error module handles errors and exceptions and provides utility classes for this purpose.
The Validation module provides a validation and filtering framework with built-in rules as well as support for custom validation of any object.
The Property module implements the concept of property editors and is used for setting and retrieving object properties.
The Reflection API complements PHP's built-in reflection support by advanced annotation handling.
The AOP Framework enables you to use the powerful techniques of Aspect Oriented Programming.
The Security Framework enforces security policies and provides an API for managing those.
The Utility module is a library of useful general-purpose functions for file handling, algorithms, environment abstraction and more.
If you are overwhelmed by the amount of information in this reference, just keep in mind that you don't need to know all of it to write your own FLOW3 packages. You can always come back and look up a specific topic once you need to know about it - that's what references are for. But even if you don't need to know everything, we recommend that you get familiar with the concepts of each module and read the whole manual. This way you make sure that you don't miss any of the great features FLOW3 provides and hopefully feel inspired to produce clean and easy-maintainable code.
A strong coffee helps most people over even the longest documentation.
- to be written -
clean and intuitive architecture
human readable code
specifically supports modern programming paradigms
designed for large and complex applications
fast results, comparable to rails
hides database - only objects / content repository
package based - package repository with large community
backed by the T3A
enterprise the PHP way
kickstarter
...