Applications are service locators. They host a set of the so-called application components that provide different services for processing requests. For example, the urlManager
component is responsible for routing Web requests to appropriate controllers; the db component provides DB-related services; and so on.
Each application component has an ID that uniquely identifies itself among other application components in the same application. You can access an application component through the expression:
For example, you can use \Yii::$app->db
to get the DB connection, and \Yii::$app->cache
to get the primary cache registered with the application.
An application component is created the first time it is accessed through the above expression. Any further accesses will return the same component instance.
Application components can be any objects. You can register them by configuring the yii\base\Application::$components
property in application configurations.
For example :
[
'components' => [
// register "cache" component using a class name
'cache' => 'yii\caching\ApcCache',
// register "db" component using a configuration array
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=demo',
'username' => 'root',
'password' => '',
],
// register "search" component using an anonymous function
'search' => function () {
return new app\components\SolrService;
},
],
]