=========================
Introduction
=========================

What is Flow?
=============

Flow is a web application platform enabling developers to create excellent web
solutions. It gives you fast results. It is a reliable foundation for complex
applications. And it is backed by one of the biggest PHP communities.


The Epic Forward
================

The Definitive Guide is meant to be a technical resource for documentation of
both Flow usage as well as the theories, patterns and practices to be used in
effective Flow development. While the community and the authors of this guide
will remain objective when presenting concepts, the information found herein
may be strongly biased both positively and negatively for and/or against
other known software development methods and practices. While the practices
adopted in this guide are not the only ones possible, nor necessarily the right
ones for all projects, they are the generally accepted "Best Practices" that
surround the design decisions and direction that have been taken by Flow and
its contributors to date.

The fanatical adoption of the processes, procedures and methodologies as
outlined in the guide will enabled you to work faster, smarter and produce the
best possible results when working within the Flow framework. Flow was
created to complete a missing piece not available to the PHP developer
community. Many of the comparable systems found in various other languages are
based on proprietary technologies or based on languages that require additional
layers or systems to build and run applications. A primary reason for this was
that due to some initial shortcomings of earlier versions of PHP, it was not
accepted as an "Enterprise" language as opposed to a .NET or Java.

With the emergence of PHP 5.3 and the feature set it has brought with it, a
better ecosystem of PHP frameworks is now possible. Flow aims to implement a
set of software design and development principles that have been proven to
produce organized, highly extensible applications which can evolve over time
with the demands and changes of their domain.


Parts of The Guide
==================

**Part I: Introduction and Fundamentals**

In this section, you will get an overview of the underlying patterns and
practices that are implemented into Flow at its core. After reading this
section, you should have a concise and informed understanding of theories and
methodologies that are involved in building a Flow application using
"Best Practices".

**Part II: Getting Started**

In Getting Started, you will learn how to get a Flow application setup and
ready to go. You will also be introduced to the basic building blocks for a
Flow application and its packages.

**Part III: Manual**

As is the case with any manual, this section will focus on how to use the
various pieces and mechanisms found within Flow. This will include descriptions
of what each component does and example code of how to use or implement it into
your application.

**Part IV: Deployment and Administration**

Learning to build an application based on Flow is one thing, but equally
important is understanding how to deploy your application into the wild, and
then how to maintain and support it once it's live. The guide has dedicated an
entire section to ensuring you know the ins and outs of publishing and
maintaining an application built on Flow.

**Part V: Appendixes**

Any framework is only as good as its ability to communicate clearly on the
frameworks intent and design to its community. While a ubiquitous language
around design patterns helps, the appendixes section aim to make getting to
specific documentation and topic references more efficient. This section is much
more effective when used after having read through the guide, acting as a quick
reference for previously learned concepts.
