成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Yii2 框架核心概念之組件(手冊翻譯)

nemo / 1946人閱讀

摘要:可以在方法里實現(xiàn)例行檢查和屬性正?;瘷z查對象方法調(diào)用開始的三個階段都在構(gòu)造函數(shù)里實現(xiàn),這意味著當(dāng)你得到一個對象的實例時,它已經(jīng)被初始化為適當(dāng)?shù)臓顟B(tài),可以被放心的使用。

組件

組件是YII框架application(應(yīng)用)的主要組成部分,它是 [yiiaseComponent]的實例或者子類。組件有三個重要特征(功能):

屬性(properties)

事件(events)

行為(behaviors)

多帶帶或者組合使用這些特征,可以讓yii框架的類變得更加易用和可定制。舉個例子,引入一個用戶交互組件[yiijuiDataPickerdata picker wigets],可以很輕松的在視圖中生成一個日期選擇控件(jquery ui date picker).

use yiijuiDatePicker;

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

DatePicker掛件的屬性很容易被修改,原因就在于他繼承了類[yiiaseComponet]

盡管組件很強大,但是其開銷也大于普通的類對象,原因在于組件需要額外的內(nèi)存和CPU時間去處理事件(events)和行為(behaviors).如果你的組件不需要事件和行為這兩個特征(功能),可以直接繼承[yiiaseObject],這樣你的組件在性能(效率)上和普通類對象一致,且支持屬性(properties).

編寫一個繼承[yiiaseComponent]或者[yiiaseObject]的類,需要遵循以下約定:

假設(shè)你重寫了構(gòu)造函數(shù),必須定義一個參數(shù)$config,作為構(gòu)造函數(shù)的最后一個參數(shù),此參數(shù)被傳遞給父類的構(gòu)造函數(shù)使用

在重寫的構(gòu)造函數(shù)的結(jié)尾必須調(diào)用父類的構(gòu)造函數(shù)

假設(shè)你重寫了[yiiaseObject::init()|init()]方法,那么必須在重寫的init方法開始調(diào)用父類的init方法

舉個例子

namespace yiicomponentsMyClass;

use yiiaseObject;

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

    public function __construct($param1, $param2, $config = [])
    {
        // ... initialization before configuration is applied

        parent::__construct($config);
    }

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

        // ... initialization after configuration is applied
    }
}

遵循如下示例,可使你的組件在創(chuàng)建時屬性即可被配置(初始化):

$component = new MyClass(1, 2, ["prop1" => 3, "prop2" => 4]);
// alternatively
$component = Yii::createObject([
    "class" => MyClass::className(),
    "prop1" => 3,
    "prop2" => 4,
], [1, 2]);
  

提示: 使用[Yii::createOject()]的方式看起來更加復(fù)雜,但是因為[Yii::createObject]是基于依賴注入的實現(xiàn),因此更加強大

[yiiaseObject]類強制實現(xiàn)如下生命周期:

在構(gòu)造函數(shù)里實現(xiàn)預(yù)初始化,可以在這個時候設(shè)定默認(rèn)的屬性值

通過$config配置對象,在構(gòu)造函數(shù)里通過對象配置可以覆蓋默認(rèn)值

在[yiiaseObject::init()|init()]方法里,進行初始化后的配置??梢栽趇nit方法里實現(xiàn)例行檢查和屬性正?;瘷z查

對象方法調(diào)用

開始的三個階段都在構(gòu)造函數(shù)里實現(xiàn),這意味著當(dāng)你得到一個對象的實例時,它已經(jīng)被初始化為適當(dāng)?shù)臓顟B(tài),可以被放心的使用。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20764.html

相關(guān)文章

  • Yii2 框架核心概念屬性(手冊翻譯

    摘要:屬性在里,類的成員變量也被稱之為屬性,這些變量是類定義的一部分,被用來表示類實例的狀態(tài)區(qū)分不同類實例。不同之處在于,當(dāng)屬性被讀時,關(guān)聯(lián)的方法被調(diào)用,當(dāng)屬性被修改時,關(guān)聯(lián)的方法被調(diào)用。 屬性 在PHP里,類的成員變量也被稱之為屬性,這些變量是類定義的一部分,被用來表示類實例的狀態(tài)(區(qū)分不同類實例)。在具體的實踐中,你可能要經(jīng)常處理可讀或者可寫屬性的特殊方式,舉個例子, 你可能想要給屬性...

    awesome23 評論0 收藏0
  • Yii修行路 - Extension 擴展

    摘要:運行來安裝指定的擴展。這更便于用戶辨別是否是的擴展。當(dāng)用戶運行安裝一個擴展時,文件會被自動更新使之包含新擴展的信息。上述代碼表明該擴展依賴于包。例如,上述的條目聲明將對應(yīng)于別名。為達到這個目的,你應(yīng)當(dāng)在公開發(fā)布前做測試。 簡述 擴展是專門設(shè)計的在 Yii 應(yīng)用中隨時可拿來使用的, 并可重發(fā)布的軟件包。 基礎(chǔ) 例如, yiisoft/yii2-debug 擴展在你的應(yīng)用的每個頁面底部添加...

    bovenson 評論0 收藏0
  • SegmentFault 社區(qū)訪談 | mcfog:自由進出 Coding && A

    摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因為設(shè)計獅顏值同學(xué)也安利了這部。劇情簡介在獨身又勞累的小林劃重點一名程序員身邊突然出現(xiàn)的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...

    neroneroffy 評論0 收藏0
  • SegmentFault 社區(qū)訪談 | mcfog:自由進出 Coding && A

    摘要:上次的訪談,介紹了下可愛的依云醬,回憶傳送門。這里簡單地介紹下龍女仆,全名小林家的龍女仆,為什么介紹這部劇呢因為設(shè)計獅顏值同學(xué)也安利了這部。劇情簡介在獨身又勞累的小林劃重點一名程序員身邊突然出現(xiàn)的穿著女仆服裝的美少女托爾。 showImg(https://segmentfault.com/img/bVR6p5?w=900&h=385); 上次的訪談,介紹了下可愛的依云醬,回憶傳送門。不...

    lx1036 評論0 收藏0
  • yii2代碼學(xué)習(xí)-BaseYii

    摘要:框架的版本已經(jīng)發(fā)布,版本最低要求是,將會在今年早些時候推出正式版。閱讀的代碼,能學(xué)到很多東西,代碼寫的很優(yōu)雅,用到了很多版本的新特性。 yii框架的v-2.0-alpha版本已經(jīng)發(fā)布,PHP版本最低要求是PHP-5.4,將會在今年早些時候推出正式版。閱讀yii2的代碼,能學(xué)到很多東西,代碼寫的很優(yōu)雅,用到了很多php-5.4版本的新特性。 BaseYii這個類,在yii2框架中被稱作...

    chavesgu 評論0 收藏0

發(fā)表評論

0條評論

nemo

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<