Yii2 framework backup
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

7.4 KiB

Composants d'application

Les applications sont des (localisateurs de services (service locators). Elles hébergent un jeu composants appelés « composants d'application » qui procurent différents services pour la prise en charge des requêtes. Par exemple, le composant urlManager (gestionnaire d'url) est chargé de router les requêtes Web vers les contrôleurs appropriés; le composant db (base de données) fournit les services relatifs à la base de données; et ainsi de suite.

Chaque composant d'application possède un identifiant unique qui le distingue des autres composants d'application de la même application. Vous pouvez accéder à un composant d'application via l'expression :

\Yii::$app->componentID

Par exemple, vous pouvez utiliser \Yii::$app->db pour obtenir la yii\db\Connection, et \Yii::$app->cache pour accéder au yii\caching\Cache enregistré dans l'application.

Un composant d'application est créé la première fois qu'on veut y accéder en utilisant l'expression ci-dessus. Les accès ultérieurs retournent la même instance du composant.

Les composants d'application peuvent être n'importe quel objet. Vous pouvez les enregistrer en configurant la propriété yii\base\Application::components dans la configuration de l'application.

Par exemple,

[
    'components' => [
        // enregistre le composant  "cache" à partir du nom de classe
        'cache' => 'yii\caching\ApcCache',

        // enregistre le composant "db" à l'aide d'un tableau de configuration
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=demo',
            'username' => 'root',
            'password' => '',
        ],

        // enregistre le composant "search" en utilisant une fonction anonyme
        'search' => function () {
            return new app\components\SolrService;
        },
    ],
]

Info: bien que vous puissiez enregistrer autant de composants d'application que vous le désirez, vous devriez le faire avec discernement. Les composants d'application sont comme les variables globales, une utilisation trop importante de composants d'application est susceptible de rendre votre code plus difficile à tester et à maintenir. Dans beaucoup de cas, vous pouvez simplement créer un composant localement et l'utiliser lorsque vous en avez besoin.

Composants du processus d'amorçage

Comme il a été dit plus haut, un composant d'application n'est instancié que lorsqu'on y accède pour la première fois. S'il n'est pas du tout accédé dans le traitement de la requête, il n'est pas instancié. Parfois, vous désirez peut être instancier un composant d'application pour chacune des requêtes, même s'il n'est pas explicitement accédé. Pour cela, vous pouvez lister son identifiant (ID) dans la propriété yii\base\Application::bootstrap de l'application.

Par exemple, la configuration d'application suivante garantit que le composant log est toujours chargé.

[
    'bootstrap' => [
        'log',
    ],
    'components' => [
        'log' => [
            // configuration pour le composant "log"
        ],
    ],
]

Composants d'application du noyau

Yii définit un jeu de composants d'application dit core application components (composants d'application du noyau ou du cœur) avec des identifiants fixés et des configurations par défaut. Par exemple, le composant yii\web\Application::request est utilisé pour collecter les informations sur une requête utilisateur et la résoudre en une route; le composant yii\base\Application::db représente une connexion à une base de données à l'aide de laquelle vous pouvez effectuer des requêtes de base de données. C'est à l'aide des ces composants d'application du noyau que les applications Yii sont en mesure de prendre en charge les requêtes des utilisateurs.

Vous trouverez ci-après la liste des composants d'application prédéfinis du noyau. Vous pouvez les configurer et les personnaliser comme tout composant d'application. Lorsque vous configurez une composant d'application du noyau, vous n'avez pas besoin de spécifier sa classe, celle par défaut est utilisée.