Les composants
sont les principaux éléments constitutifs des applications Yii. Est une instance de la classe yiibaseComponent ou de ses sous-classes. Les trois fonctions principales utilisées pour la distinguer des autres classes sont :
Property (Apprentissage recommandé : yii framework)
Event (Event)
Comportement (Behavior)
Soit utilisées seules, soit en conjonction les unes avec les autres, l'application de ces fonctions rend les classes Yii plus flexibles et plus faciles à utiliser. Prenons l'exemple du widget yiijuiDatePicker. Il s'agit d'un composant d'interface utilisateur qui vous permet de générer un sélecteur de date interactif dans une vue :
use yii\jui\DatePicker; echo DatePicker::widget([ 'language' => 'zh-CN', 'name' => 'country', 'clientOptions' => [ 'dateFormat' => 'yy-mm-dd', ], ]);use yii\jui\DatePicker; echo DatePicker::widget([ 'language' => 'zh-CN', 'name' => 'country', 'clientOptions' => [ 'dateFormat' => 'yy-mm-dd', ], ]);
Ce widget hérite de yiibaseComponent et ses propriétés peuvent être facilement réécrites.
Précisément en raison des fonctions puissantes des composants, ils sont légèrement plus lourds que les objets ordinaires (Object) car ils utilisent de la mémoire et du temps CPU supplémentaires pour traiter les événements et les comportements.
Si vous n'avez pas besoin de ces deux fonctions, vous pouvez hériter de yiibaseObject au lieu de yiibaseComponent. De cette façon, le composant peut être aussi efficace qu'un objet PHP normal, tout en prenant également en charge la fonction de propriété.
Lors de l'héritage de yiibaseComponent ou yiibaseObject, il est recommandé d'utiliser le style de codage suivant :
Si vous devez remplacer le constructeur (Constructor), transmettez $config en tant que constructeur Le dernier paramètre de la méthode constructeur, puis transmettez-le au constructeur de la classe parent.
Appelez toujours le constructeur de la classe parent à la fin de votre constructeur remplacé.
Si vous remplacez la méthode yiibaseBaseObject::init(), assurez-vous d'appeler la méthode init de la classe parent au début de la méthode init.
<?php namespace yii\components\MyClass; use yii\base\BaseObject; class MyClass extends BaseObject { public $prop1; public $prop2; public function __construct($param1, $param2, $config = []) { // ... 在应用配置之前初始化 parent::__construct($config); } public function init() { parent::init(); // ... 应用配置后进行初始化 } }
De plus, afin que le composant soit configuré correctement lors de la création d'une instance, veuillez suivre le processus d'opération suivant :
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]); // 方法二: $component = \Yii::createObject([ 'class' => MyClass::className(), 'prop1' => 3, 'prop2' => 4, ], [1, 2])
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!