這篇文章主要介紹yii2中組件是什么意思,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元潁泉做網(wǎng)站,已為上家服務(wù),為潁泉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
組件是YII框架application(應(yīng)用)的主要組成部分,它是 [yii\base\Component]的實(shí)例或者子類。組件有三個(gè)重要特征(功能):
·屬性(properties)
·事件(events)
·行為(behaviors)
單獨(dú)或者組合使用這些特征,可以讓yii框架的類變得更加易用和可定制。舉個(gè)例子,引入一個(gè)用戶交互組件[yii\jui\DataPicker\data picker wigets],可以很輕松的在視圖中生成一個(gè)日期選擇控件(jquery ui date picker)。
use yii\jui\DatePicker; echo DatePicker::widget([ 'language' => 'ru', 'name' => 'country', 'clientOptions' => [ 'dateFormat' => 'yy-mm-dd', ], ]);
DatePicker掛件的屬性很容易被修改,原因就在于他繼承了類[yii\base\Componet]
盡管組件很強(qiáng)大,但是其開銷也大于普通的類對象,原因在于組件需要額外的內(nèi)存和CPU時(shí)間去處理事件(events)和行為(behaviors).如果你的組件不需要事件和行為這兩個(gè)特征(功能),可以直接繼承[yii\base\Object],這樣你的組件在性能(效率)上和普通類對象一致,且支持屬性(properties)。
編寫一個(gè)繼承[yii\base\Component]或者[yii\base\Object]的類,需要遵循以下約定:
·假設(shè)你重寫了構(gòu)造函數(shù),必須定義一個(gè)參數(shù)$config,作為構(gòu)造函數(shù)的最后一個(gè)參數(shù),此參數(shù)被傳遞給父類的構(gòu)造函數(shù)使用
·在重寫的構(gòu)造函數(shù)的結(jié)尾必須調(diào)用父類的構(gòu)造函數(shù)
·假設(shè)你重寫了[yii\base\Object::init()|init()]方法,那么必須在重寫的init方法開始調(diào)用父類的init方法
舉個(gè)例子
namespace yii\components\MyClass; use yii\base\Object; 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)建時(shí)屬性即可被配置(初始化):
$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ù)雜,但是因?yàn)閇Yii::createObject]是基于依賴注入的實(shí)現(xiàn),因此更加強(qiáng)大
[yii\base\Object]類強(qiáng)制實(shí)現(xiàn)如下生命周期:
(1)在構(gòu)造函數(shù)里實(shí)現(xiàn)預(yù)初始化,可以在這個(gè)時(shí)候設(shè)定默認(rèn)的屬性值;
(2)通過$config配置對象,在構(gòu)造函數(shù)里通過對象配置可以覆蓋默認(rèn)值;
(3)在[yii\base\Object::init()|init()]方法里,進(jìn)行初始化后的配置??梢栽趇nit方法里實(shí)現(xiàn)例行檢查和屬性正?;瘷z查;
(4)對象方法調(diào)用。
開始的三個(gè)階段都在構(gòu)造函數(shù)里實(shí)現(xiàn),這意味著當(dāng)你得到一個(gè)對象的實(shí)例時(shí),它已經(jīng)被初始化為適當(dāng)?shù)臓顟B(tài),可以被放心的使用。
以上是“yii2中組件是什么意思”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前文章:yii2中組件是什么意思
轉(zhuǎn)載源于:http://bm7419.com/article48/pppjep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、Google、網(wǎng)頁設(shè)計(jì)公司、商城網(wǎng)站、服務(wù)器托管、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)