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 traitement des requêtes de pages Web et de leur routage vers le contrôleur correspondant, le composant db fournit des services liés à la base de données, etc.
Dans la même application, chaque composant d'application possède un identifiant unique pour distinguer les autres composants d'application. Vous pouvez accéder aux composants d'application via les expressions suivantes. (Apprentissage recommandé : tutoriel yii)
\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; }, ], ]
Message : Veuillez faire attention à 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. Généralement, vous pouvez créer des composants locaux en cas de besoin.
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!