Qiang Xue
11 years ago
1 changed files with 98 additions and 0 deletions
@ -0,0 +1,98 @@
|
||||
Configuration |
||||
============= |
||||
|
||||
In Yii application and majority of components have sensible defaults so it's unlikely you spend lots of time configuring |
||||
it. Still there are some mandatory options such as database connection you should set up. |
||||
|
||||
How application is configured depends on application template but there are some genral principles applying in any case. |
||||
|
||||
Configuring options in bootstrap file |
||||
------------------------------------- |
||||
|
||||
For each application in Yii there is at least one bootstrap file. For web applications it's typically `index.php`, for |
||||
console applications it's `yii`. Both are doing nearly the same job: |
||||
|
||||
1. Setting common constants. |
||||
2. Including Yii itself. |
||||
3. Including Composer autoloader. |
||||
4. Reading config file into `$config`. |
||||
5. Creating new application instance using `$config` and running it. |
||||
|
||||
Bootstrap file is not the part of framework but your application so it's OK to adjust it to fit your application. Typical |
||||
adjustments are the value of `YII_DEBUG` that should never be `true` on production and the way config is read. |
||||
|
||||
Configuring application instance |
||||
-------------------------------- |
||||
|
||||
It was mentioned above that application is configured in bootstrap file when its instance is created. Config is typically |
||||
stored in a PHP file in `/config` directory of the application and looks like the following: |
||||
|
||||
```php |
||||
<?php |
||||
return array( |
||||
'id' => 'applicationId', |
||||
'basePath' => dirname(__DIR__), |
||||
'components' => array( |
||||
// ... |
||||
), |
||||
'params' => require(__DIR__ . '/params.php'), |
||||
); |
||||
``` |
||||
|
||||
In the above array keys are names of application properties. Depending on application type you can check properies of |
||||
either `\yii\web\Application` or `\yii\console\Application`. Both are extended from `\yii\base\Application`. |
||||
|
||||
> Note that you can configure not only public class properties but anything accessible via setter. For example, to |
||||
configure runtime path you can use key named `runtimePath`. There's no such property in the application class but |
||||
since there's a corresponding setter named `setRuntimePath` it will be properly configured. |
||||
|
||||
Configuring application components |
||||
---------------------------------- |
||||
|
||||
Majority of Yii functionality are application components. These are attached to application via its `components` property: |
||||
|
||||
```php |
||||
<?php |
||||
return array( |
||||
'id' => 'applicationId', |
||||
'basePath' => dirname(__DIR__), |
||||
'components' => array( |
||||
'cache' => array( |
||||
'class' => 'yii\caching\FileCache', |
||||
), |
||||
'user' => array( |
||||
'identityClass' => 'app\models\User', |
||||
), |
||||
'errorHandler' => array( |
||||
'errorAction' => 'site/error', |
||||
), |
||||
'log' => array( |
||||
'traceLevel' => YII_DEBUG ? 3 : 0, |
||||
'targets' => array( |
||||
array( |
||||
'class' => 'yii\log\FileTarget', |
||||
'levels' => array('error', 'warning'), |
||||
), |
||||
), |
||||
), |
||||
), |
||||
// ... |
||||
); |
||||
``` |
||||
|
||||
In the above four components are configured: `cache`, `user`, `errorHandler`, `log`. Each entry key is a component ID |
||||
and the value is the configuration array. ID is used to access the component like `\Yii::$app->myComponent`. |
||||
Configuration array has one special key named `class` that sets component class. The rest of the keys and values are used |
||||
to configure component properties in the same way as top-level keys are used to configure application properties. |
||||
|
||||
Each application has predefined set of the components. In case of configuring one of these `class` key is omitted and |
||||
application default class is used instead. You can check `registerCoreComponents` method of the application you are using |
||||
to get a list of component IDs and corresponding classes. |
||||
|
||||
Note that Yii is smart enough to configure the component when it's actually used i.e. if `cache` is never used it will |
||||
not be instantiated and configured at all. |
||||
|
||||
Setting component defaults classwide |
||||
------------------------------------ |
||||
|
||||
TBD |
Loading…
Reference in new issue