1
|
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
<chapter version="5.0" xml:id="flow3.introduction"
|
3
|
xmlns="http://docbook.org/ns/docbook"
|
4
|
xmlns:ns6="http://www.w3.org/1999/xlink"
|
5
|
xmlns:ns5="http://www.w3.org/2000/svg"
|
6
|
xmlns:ns4="http://www.w3.org/1999/xhtml"
|
7
|
xmlns:ns3="http://www.w3.org/1998/Math/MathML"
|
8
|
xmlns:ns="http://docbook.org/ns/docbook">
|
9
|
<title>Introduction</title>
|
10
|
|
11
|
<para>FLOW3 is a PHP-based application framework. It is especially
|
12
|
well-suited for enterprise-grade applications and explicitly supports
|
13
|
Domain-Driven Design, a powerful software design philosophy. Convention over
|
14
|
configuration, Test-Driven Development, Continuous Integration and an
|
15
|
easy-to-read source code are other important principles we follow for the
|
16
|
development of FLOW3.</para>
|
17
|
|
18
|
<para>Although we created FLOW3 as the foundation for the TYPO3 Content
|
19
|
Management System, its approach is general enough to be useful as a basis
|
20
|
for any other PHP application. We're happy to share the FLOW3 framework with
|
21
|
the whole PHP community and are looking forward to the hundreds of new
|
22
|
features and enhancements contributed as packages by other enthusiastic
|
23
|
developers. In fact most of the packages which will be developed for the
|
24
|
TYPO3 CMS can be used in any other FLOW3-based application. In essence this
|
25
|
reflects the vision of the TYPO3 project: "Inspiring People to
|
26
|
Share".</para>
|
27
|
|
28
|
<para>This reference describes all features of FLOW3 and provides you with
|
29
|
in-depth information. If you'd like to get a feeling for FLOW3 and get
|
30
|
started quickly, we suggest that you try out our Getting Started tutorial
|
31
|
first.</para>
|
32
|
|
33
|
<note>
|
34
|
<para>Although we hope that the documentation is accurate and up to date,
|
35
|
it probably misses some important sections or parts that are hard to
|
36
|
understand. If you find errors or would like to help us improving the
|
37
|
documentation, we're happy to hear from you on our mailing list!</para>
|
38
|
</note>
|
39
|
|
40
|
<section xml:id="flow3.introduction.overview">
|
41
|
<title>Overview</title>
|
42
|
|
43
|
<para>The FLOW3 framework is composed of the following submodules:</para>
|
44
|
|
45
|
<itemizedlist>
|
46
|
<listitem>
|
47
|
<para>The <emphasis>FLOW3 Bootstrap</emphasis> takes care of
|
48
|
configuring and initializing the whole framework.</para>
|
49
|
</listitem>
|
50
|
|
51
|
<listitem>
|
52
|
<para>The <emphasis>Package</emphasis> Manager allows you to download,
|
53
|
install, configure and uninstall packages.</para>
|
54
|
</listitem>
|
55
|
|
56
|
<listitem>
|
57
|
<para>The <emphasis>Object</emphasis> Manager is in charge of
|
58
|
building, caching and combining objects.</para>
|
59
|
</listitem>
|
60
|
|
61
|
<listitem>
|
62
|
<para>The <emphasis>Configuration</emphasis> framework reads and
|
63
|
cascades various kinds of configuration from different sources and
|
64
|
provides access to it.</para>
|
65
|
</listitem>
|
66
|
|
67
|
<listitem>
|
68
|
<para>The <emphasis>Resource</emphasis> module contains functions for
|
69
|
publishing, caching, securing and retrieving resources.</para>
|
70
|
</listitem>
|
71
|
|
72
|
<listitem>
|
73
|
<para>The <emphasis>MVC</emphasis> framework takes care of requests
|
74
|
and responses and provides you with a powerful, easy-to use
|
75
|
Model-View-Controller implementation.</para>
|
76
|
</listitem>
|
77
|
|
78
|
<listitem>
|
79
|
<para>The <emphasis>Cache</emphasis> framework provides different
|
80
|
kinds of caches with can be combined with a selection of cache
|
81
|
backends.</para>
|
82
|
</listitem>
|
83
|
|
84
|
<listitem>
|
85
|
<para>The <emphasis>Error</emphasis> module handles errors and
|
86
|
exceptions and provides utility classes for this purpose.</para>
|
87
|
</listitem>
|
88
|
|
89
|
<listitem>
|
90
|
<para>The <emphasis>Log</emphasis> module provides simple but powerful
|
91
|
means to log any kind of event or signal into different types of
|
92
|
backends.</para>
|
93
|
</listitem>
|
94
|
|
95
|
<listitem>
|
96
|
<para>The <emphasis>Signal Slot</emphasis> module implements the
|
97
|
event-driven concept of signals and slots through AOP aspects.</para>
|
98
|
</listitem>
|
99
|
|
100
|
<listitem>
|
101
|
<para>The <emphasis>Validation</emphasis> module provides a validation
|
102
|
and filtering framework with built-in rules as well as support for
|
103
|
custom validation of any object.</para>
|
104
|
</listitem>
|
105
|
|
106
|
<listitem>
|
107
|
<para>The <emphasis>Property</emphasis> module implements the concept
|
108
|
of property editors and is used for setting and retrieving object
|
109
|
properties.</para>
|
110
|
</listitem>
|
111
|
|
112
|
<listitem>
|
113
|
<para>The <emphasis>Reflection</emphasis> API complements PHP's
|
114
|
built-in reflection support by advanced annotation handling and a
|
115
|
cached reflection service.</para>
|
116
|
</listitem>
|
117
|
|
118
|
<listitem>
|
119
|
<para>The <emphasis>AOP</emphasis> framework enables you to use the
|
120
|
powerful techniques of <firstterm>Aspect Oriented
|
121
|
Programming</firstterm>.</para>
|
122
|
</listitem>
|
123
|
|
124
|
<listitem>
|
125
|
<para>The <emphasis>Persistence</emphasis> module allows you to
|
126
|
transparently persist your objects following principles of
|
127
|
<emphasis>Domain Driven Design</emphasis>.</para>
|
128
|
</listitem>
|
129
|
|
130
|
<listitem>
|
131
|
<para>The <emphasis>Security</emphasis> framework enforces security
|
132
|
policies and provides an API for managing those.</para>
|
133
|
</listitem>
|
134
|
|
135
|
<listitem>
|
136
|
<para>The <emphasis>Session</emphasis> framework takes care of session
|
137
|
handling and storing session information in different backends</para>
|
138
|
</listitem>
|
139
|
|
140
|
<listitem>
|
141
|
<para>The <emphasis>Locale</emphasis> service manages languages and
|
142
|
other regional settings and makes them accessible to other packages
|
143
|
and FLOW3 sub packages.</para>
|
144
|
</listitem>
|
145
|
|
146
|
<listitem>
|
147
|
<para>The <emphasis>Utility</emphasis> module is a library of useful
|
148
|
general-purpose functions for file handling, algorithms, environment
|
149
|
abstraction and more.</para>
|
150
|
</listitem>
|
151
|
</itemizedlist>
|
152
|
|
153
|
<para>If you are overwhelmed by the amount of information in this
|
154
|
reference, just keep in mind that you don't need to know all of it to
|
155
|
write your own FLOW3 packages. You can always come back and look up a
|
156
|
specific topic once you need to know about it - that's what references are
|
157
|
for. But even if you don't need to know everything, we recommend that you
|
158
|
get familiar with the concepts of each module and read the whole manual.
|
159
|
This way you make sure that you don't miss any of the great features FLOW3
|
160
|
provides and hopefully feel inspired to produce clean and
|
161
|
easy-maintainable code.</para>
|
162
|
|
163
|
<tip>
|
164
|
<para>A strong coffee helps most people over even the longest
|
165
|
documentation.</para>
|
166
|
</tip>
|
167
|
</section>
|
168
|
</chapter>
|