Maison >cadre php >YII >Les composants d'application du framework Yii sont-ils des localisateurs de services ?

Les composants d'application du framework Yii sont-ils des localisateurs de services ?

(*-*)浩
(*-*)浩original
2019-11-29 15:36:192337parcourir

Le principal de l'application est un localisateur de services, qui déploie un ensemble de composants d'application qui fournissent diverses fonctions pour gérer les requêtes. Par exemple, le composant urlManager est responsable du routage des requêtes de page Web vers le contrôleur correspondant. Le composant db fournit des services liés aux bases de données et bien plus encore.

Les composants d'application du framework Yii sont-ils des localisateurs de services ?

Dans la même application, chaque composant applicatif possède un identifiant unique pour distinguer les autres composants applicatifs. Vous pouvez accéder aux composants applicatifs. à travers les expressions suivantes. (Apprentissage recommandé : yii framework)

\Yii::$app->componentID

Par exemple, vous pouvez utiliser Yii::$app->db pour obtenir la connexion DB enregistrée dans l'application, utilisez Yii::$ app ->cache pour obtenir le cache principal enregistré dans l'application.

La première fois que vous utilisez l'expression ci-dessus, une instance de composant d'application sera créée. Les visites ultérieures renverront cette instance et il n'est pas nécessaire de la créer à nouveau.

Les composants d'application peuvent être n'importe quel objet et peuvent être configurés dans la configuration du corps de l'application avec l'attribut yiibaseApplication::$components. Par exemple :

[
    'components' => [
        // 使用类名注册 "cache" 组件
        'cache' => 'yii\caching\ApcCache',
        // 使用配置数组注册 "db" 组件
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=localhost;dbname=demo',
            'username' => 'root',
            'password' => '',
        ],
        // 使用函数注册"search" 组件
        'search' => function () {
            return new app\components\SolrService;
        },
    ],
]

Information : veillez à enregistrer trop de composants d'application. Les composants d'application sont comme des variables globales. L'utilisation d'un trop grand nombre peut rendre les tests et la maintenance plus difficiles. Normalement, vous pouvez créer des composants locaux si nécessaire.

Boot Startup Component

Comme mentionné ci-dessus, un composant applicatif ne sera instancié qu'au premier accès. S'il n'y a pas d'accès lors du traitement de la requête, il sera instancié. ne sera pas instancié. Parfois, vous souhaitez instancier un composant lors de chaque traitement de requête, même s'il n'est pas accessible. Vous pouvez ajouter l'ID du composant à l'attribut bootstrap du corps de l'application.

Vous pouvez également utiliser des fermetures pour démarrer des composants personnalisés. Il n'est pas nécessaire de renvoyer directement un composant instancié. La fermeture est également appelée après l'instanciation du corps d'application yiibaseApplication.

Par exemple, la configuration suivante du corps de l'application garantit que le composant de journal est toujours chargé.

[
    'bootstrap' => [
        'log',
        function($app){
            return new ComponentX();
        },
        function($app){
            // 可以写自定义的代码
           return;
        }
    ],
    'components' => [
        'log' => [
            // "log" 组件的配置
        ],
    ],
]

Composants d'application de base

Yii définit un ensemble de composants de base avec des ID fixes et des configurations par défaut. Par exemple, le composant de requête est utilisé pour collecter les demandes des utilisateurs et les analyser. routes ; db représente une connexion à la base de données qui peut effectuer des opérations de base de données. Grâce à ces composants, le corps de l'application Yii peut gérer les demandes des utilisateurs.

Ce qui suit est une liste de composants d'application de base prédéfinis, qui peuvent être configurés et personnalisés comme des composants d'application ordinaires. Lorsque vous configurez un composant principal et ne spécifiez pas son nom de classe, la classe spécifiée par Yii par défaut sera utilisée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn