Komponenten sind die Hauptbausteine von Yii-Anwendungen. Ist eine Instanz der yiibaseComponent-Klasse oder ihrer Unterklassen. Die drei Hauptfunktionen zur Unterscheidung von anderen Klassen sind:
Property (Empfohlenes Lernen: yii-Framework)
Event (Event)
Verhalten (Verhalten)
Entweder allein oder in Verbindung miteinander macht die Anwendung dieser Funktionen Yii-Klassen flexibler und benutzerfreundlicher. Nehmen Sie als Beispiel das Widget yiijuiDatePicker. Dies ist eine UI-Komponente, mit der Sie eine interaktive Datumsauswahl in einer Ansicht generieren können:
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', ], ]);
Dieses Widget erbt von yiibaseComponent und seine Eigenschaften können einfach umgeschrieben werden.
Gerade aufgrund der leistungsstarken Funktionen von Komponenten sind sie etwas schwerer als normale Objekte (Object), da sie zusätzlichen Speicher und CPU-Zeit benötigen, um Ereignisse und Verhaltensweisen zu verarbeiten.
Wenn Sie diese beiden Funktionen nicht benötigen, können Sie yiibaseObject anstelle von yiibaseComponent erben. Auf diese Weise kann die Komponente genauso effizient sein wie ein normales PHP-Objekt und gleichzeitig die Eigenschaftsfunktion unterstützen.
Beim Erben von yiibaseComponent oder yiibaseObject wird empfohlen, den folgenden Codierungsstil zu verwenden:
Wenn Sie den Konstruktor (Konstruktor) überschreiben müssen, übergeben Sie $config als Konstruktor Der letzte Parameter der Konstruktormethode und dann an den Konstruktor der übergeordneten Klasse übergeben.
Rufen Sie den Konstruktor der übergeordneten Klasse immer am Ende Ihres überschriebenen Konstruktors auf.
Wenn Sie die Methode yiibaseBaseObject::init() überschreiben, stellen Sie bitte sicher, dass Sie die Init-Methode der übergeordneten Klasse am Anfang der Init-Methode aufrufen.
<?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(); // ... 应用配置后进行初始化 } }
Damit die Komponente beim Erstellen einer Instanz korrekt konfiguriert wird, befolgen Sie bitte außerdem den folgenden Vorgang:
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]); // 方法二: $component = \Yii::createObject([ 'class' => MyClass::className(), 'prop1' => 3, 'prop2' => 4, ], [1, 2])
Das obige ist der detaillierte Inhalt vonWas sind yii2.0-Komponenten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!