99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

組件(Components)

2018-02-24 15:40 更新

組件(Component)

組件是 Yii 應(yīng)用的主要基石。是 yii\base\Component 類或其子類的實例。三個用以區(qū)分它和其它類的主要功能有:

或單獨使用,或彼此配合,這些功能的應(yīng)用讓 Yii 的類變得更加靈活和易用。以小部件 yii\jui\DatePicker 來舉例,這是個方便你在?視圖中生成一個交互式日期選擇器的 UI 組件:

use yii\jui\DatePicker;

echo DatePicker::widget([
    'language' => 'zh-CN',
    'name'  => 'country',
    'clientOptions' => [
        'dateFormat' => 'yy-mm-dd',
    ],
]);

這個小部件繼承自 yii\base\Component,它的各項屬性改寫起來會很容易。

正是因為組件功能的強大,他們比常規(guī)的對象(Object)稍微重量級一點,因為他們要使用額外的內(nèi)存和 CPU 時間來處理?事件?和?行為?。如果你不需要這兩項功能,可以繼承 yii\base\Object 而不是 yii\base\Component。這樣組件可以像普通 PHP 對象一樣高效,同時還支持屬性(Property)功能。

當(dāng)繼承 yii\base\Component 或 yii\base\Object 時,推薦你使用如下的編碼風(fēng)格:

  • 若你需要重寫構(gòu)造方法(Constructor),傳入?$config?作為構(gòu)造器方法最后一個參數(shù),然后把它傳遞給父類的構(gòu)造方法。
  • 永遠(yuǎn)在你重寫的構(gòu)造方法結(jié)尾處調(diào)用一下父類的構(gòu)造方法。
  • 如果你重寫了 yii\base\Object::init() 方法,請確保你在?init?方法的開頭處調(diào)用了父類的?init?方法。

例子如下:

namespace yii\components\MyClass;

use yii\base\Object;

class MyClass extends Object
{
    public $prop1;
    public $prop2;

    public function __construct($param1, $param2, $config = [])
    {
        // ... 配置生效前的初始化過程

        parent::__construct($config);
    }

    public function init()
    {
        parent::init();

        // ... 配置生效后的初始化過程
    }
}

另外,為了讓組件可以在創(chuàng)建實例時能被正確配置,請遵照以下操作流程:

$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]);
// 方法二:
$component = \Yii::createObject([
    'class' => MyClass::className(),
    'prop1' => 3,
    'prop2' => 4,
], [1, 2]);

補充:盡管調(diào)用 Yii::createObject() 的方法看起來更加復(fù)雜,但這主要因為它更加靈活強大,它是基于依賴注入容器實現(xiàn)的。

yii\base\Object 類執(zhí)行時的生命周期如下:

  1. 構(gòu)造方法內(nèi)的預(yù)初始化過程。你可以在這兒給各屬性設(shè)置缺省值。
  2. 通過?$config?配置對象。配置的過程可能會覆蓋掉先前在構(gòu)造方法內(nèi)設(shè)置的默認(rèn)值。
  3. 在 yii\base\Object::init() 方法內(nèi)進行初始化后的收尾工作。你可以通過重寫此方法,進行一些良品檢驗,屬性的初始化之類的工作。
  4. 對象方法調(diào)用。

前三步都是在對象的構(gòu)造方法內(nèi)發(fā)生的。這意味著一旦你獲得了一個對象實例,那么它就已經(jīng)初始化就緒可供使用。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號