元件是 Yii 應用的主要基石。是 yii\base\Component 類別或其子類別的實例。三個用來區分它和它類別的主要功能有:
屬性(Property) (建議學習:yii框架)
)事件(Event)
行為(Behavior)
或單獨使用,或彼此配合,這些功能的應用讓Yii 的類別變得更加靈活和易用。以小工具 yii\jui\DatePicker 來舉例, 這是一個方便你在 視圖 中產生一個互動式日期選擇器的UI 元件:
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', ], ]);
這個小工具繼承自yii\base\Component,它的各項屬性改寫起來會很容易。
正是因為元件功能的強大,他們比常規的物件(Object)稍微重量級一點,因為他們要使用額外的記憶體和 CPU 時間來處理 事件 和 行為 。
如果你不需要這兩個功能,可以繼承 yii\base\Object 而不是 yii\base\Component。這樣元件可以像普通 PHP 物件一樣高效, 同時也支援屬性(Property)功能。
當繼承yii\base\Component 或yii\base\Object 時, 推薦你使用如下的編碼樣式:
如果你需要重寫建構方法(Constructor ),傳入$config 作為建構器方法最後一個參數, 然後把它傳遞給父類別的建構方法。
永遠在你重寫的建構方法結尾處呼叫一下父類別的建構方法。
如果你重寫了 yii\base\BaseObject::init() 方法,請確保你在 init 方法的開頭處呼叫了父類別的 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(); // ... 应用配置后进行初始化 } }
另外,為了讓元件在建立實例時能正確配置,請遵照以下操作流程:
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]); // 方法二: $component = \Yii::createObject([ 'class' => MyClass::className(), 'prop1' => 3, 'prop2' => 4, ], [1, 2])
以上是yii2.0 組件是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!