1.2. FLOW3 Bootstrap

This section is work in progress and only contains some bullet points for the later documenation.

Application Context

The FLOW3 Framework can be started in different application contexts. An application context basically is a set of configuration which has been defined for a certain context. By default, FLOW3 provides configuration for the Production, Development, Testing, and Staging context. More contexts may be defined by just adding configuration for it accordingly (refer to the Configuration section to learn more about configuration).

The FLOW3 boot strap is always instantiated in a certain application context. By default (when calling the index.php file) the context is Production. In the standard distribution a file index_dev.php exists which runs FLOW3 in the Development context.

Boot Sequence

  • Construction

    • Stage 1: instantiate FLOW3 with application context

    • Stage 2: Check environment for the FLOW3 package

  • Initialization

    • Stage 3: Load FLOW3 configuration

      from Packages/FLOW3/Configuration/FLOW3.php, /Configuration/FLOW3.php and the context directory

    • Stage 4: Package configuration

      Scan available packages

      Load the package configuration from /Configuration/Packages.php, then the context configuration from /Configuration/Production/Packages.php.

      Load additional package configuration from [PackageDir]/Configuration/Packages.php

      Assert package interdependencies

      Assert package environment dependencies

    • Stage 5: Component Configuration

      Register all package classes as components

      Load global component configuration from /Configuration/Components.php

      Load additional component configuration from packages (/Configuration/Components.php)

      POST PROCESSING (defined in Configuration/FLOW3.php):

      -> Build aspect containers, proxy classes and modify the component configurations if necessary

    • Stage 6: Settings

      Load settings from global Settings.ini and context Settings.php

      Load settings from package's Settings.php

      Load settings from additional registered sources

      -> Settings are defined per-package and can be retrieved through the package object (getSettings())

  • Execution

    Resolve a request handler and invoke it