# Application Configuration

You should give an array of config or an ini config file(see `Yaf_Config_Ini`) path to `Yaf_Application::__construct`.

Yaf will merge the application configurations and user configurations automatically. The application configurations have prefix "yaf." or "application.". If both "yaf." and "application." exist, "application." will be accepted preferentially.

## An PHP array example

    <?php
        $configs = array(
                "application" => array(
                    "directory" => dirname(__FILE__),
                    "dispatcher" => array(
                          "catchException" => 0,
                        ),
                    "view" => array(
                           "ext" => "phtml",
                        ),
                    ),
               );
        $app = new Yaf_Application($configs);
    ?>

## An ini file example

    [yaf]
    yaf.directory = APPLICATION_PATH "/appliation"
    yaf.dispatcher.catchException = 0

    [product : yaf]
    ; user configuration list here

## Yaf Application Config

&Name; | &Default; | &Changelog;
application.directory |  |
application.ext | "php" |
application.view.ext | "phtml" |
application.modules | "index" |
application.library | application.directory . "/library" |
application.library.directory | application.directory . "/library" |
application.library.namespace | "" |
application.bootstrap | application.directory . "/Bootstrap" . application.ext |
application.baseUri | "" |
application.dispatcher.defaultRoute |  |
application.dispatcher.throwException | 1 |
application.dispatcher.catchException | 0 |
application.dispatcher.defaultModule | "index" |
application.dispatcher.defaultController | "index" |
application.dispatcher.defaultAction | "index" |
application.system |  |

&ini.descriptions.title;

`application.directory` `string`

- The directory of the application, that is the folder which contains the "controllers", "views", "models", "plugins" folders.

  This config entry is the only one which doesn't has a default value. You should always define it manually.

`application.ext` `string`

- The file ext of the PHP script, used in class autoloading( `Yaf_Loader`).

`application.view.ext` `string`

- The file ext of the view template scripts.

`application.modules` `string`

- A comma-separated list of the registered modules, used in the route process, especially while there are more than three segments in the PATH_INFO,

  Yaf need a way to find out whether the first segment is a module name or not.

`application.library` `string`

- The local library directory, see `Yaf_Loader` and yaf.library.

  After Yaf 2.1.6, this config entry can be an array. The library path will try to use the items setted in application.library.directory

`application.library.directory` `string`

- Alias of application.library. Introduced in Yaf 2.1.6

`application.library.namespace` `string`

- A comma-separated prefix of local library namespace.

  Introduced in Yaf 2.1.6

`application.bootstrap` `string`

- A absolute path of the Bootstrap class script.

`application.baseUri` `string`

- Used to remove a fixed prefix of request uri in route process. Take a example, comes a request with request uri "/prefix/controller/action". if you set application.baseUri to "/prefix", then only "/controller/action" will take as the PATH_INFO in route process.

  In generally, there is no need to set this value.

`application.dispatcher.throwException` `bool`

- If it set to On, Yaf will throw an exception while some error occurring. See also `Yaf_Dispatcher::throwException`.

`application.dispatcher.catchException` `bool`

- If it set to On, Yaf will forward to Error controller/Action while there is an unhandled exception. See also `Yaf_Dispatcher::catchException`.

`application.dispatcher.defaultRoute` `string`

- The default Route, if it is not specificed, Static route will be used as default. See: `Yaf_Router::addRoute`.

`application.dispatcher.defaultModule` `string`

- The default module name, see also `Yaf_Dispatcher::setDefaultModule`.

`application.dispatcher.defaultController` `string`

- The default controller name, see also `Yaf_Dispatcher::setDefaultController`.

`application.dispatcher.defaultAction` `string`

- The default action name, see also `Yaf_Dispatcher::setDefaultAction`.

`application.system` `string`

- Set yaf runtime configure in application.ini, like: application.system.lowcase_path

  only those `INI_ALL` configures can be set in this way