組件是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)大,但是其開銷也大于普通的類對(duì)象,原因在于組件需要額外的內(nèi)存和CPU時(shí)間去處理事件(events)和行為(behaviors).如果你的組件不需要事件和行為這兩個(gè)特征(功能),可以直接繼承[yii\base\Object],這樣你的組件在性能(效率)上和普通類對(duì)象一致,且支持屬性(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配置對(duì)象,在構(gòu)造函數(shù)里通過對(duì)象配置可以覆蓋默認(rèn)值;
(3)在[yii\base\Object::init()|init()]方法里,進(jìn)行初始化后的配置。可以在init方法里實(shí)現(xiàn)例行檢查和屬性正?;瘷z查;
(4)對(duì)象方法調(diào)用。
開始的三個(gè)階段都在構(gòu)造函數(shù)里實(shí)現(xiàn),這意味著當(dāng)你得到一個(gè)對(duì)象的實(shí)例時(shí),它已經(jīng)被初始化為適當(dāng)?shù)臓顟B(tài),可以被放心的使用。
PHP中文網(wǎng),有大量免費(fèi)的Yii入門教程,歡迎大家學(xué)習(xí)!
以上是yii2中組件什么意思的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

不少用戶在玩win10的的一些游戲的時(shí)候總是會(huì)遇到一些問題,比如說卡屏和花屏等等情況,這個(gè)時(shí)候我們是可以采用打開directplay這個(gè)功能來解決的,而且功能的操作方法也很簡(jiǎn)單。win10舊版組件directplay怎么安裝1、在搜索框里面輸入“控制面板”然后打開2、查看方式選擇大圖標(biāo)3、找到“程序和功能”4、點(diǎn)擊左側(cè)的啟用或關(guān)閉win功能5、選擇舊版這里的勾選上就可以了

Vue是一款非常流行的前端框架,它提供了很多工具和功能,如組件化、數(shù)據(jù)綁定、事件處理等,能夠幫助開發(fā)者構(gòu)建出高效、靈活和易維護(hù)的Web應(yīng)用程序。在這篇文章中,我來介紹如何使用Vue實(shí)現(xiàn)一個(gè)日歷組件。1、需求分析首先,我們需要分析一下這個(gè)日歷組件的需求。一個(gè)基本的日歷應(yīng)該具備以下功能:展示當(dāng)前月份的日歷頁(yè)面;支持切換到前一月或下一月;支持點(diǎn)擊某一天,

Vue是目前最流行的前端框架之一,而VUE3則是Vue框架的最新版本,相較于VUE2,VUE3具備了更高的性能和更出色的開發(fā)體驗(yàn),成為了眾多開發(fā)者的首選。在VUE3中,使用extends繼承組件是一個(gè)非常實(shí)用的開發(fā)方式,本文將為大家介紹如何使用extends繼承組件。extends是什么?在Vue中,extends是一個(gè)非常實(shí)用的屬性,它可以用于子組件繼承父

在VSCode中開發(fā)Vue/React組件時(shí),怎么實(shí)時(shí)預(yù)覽組件?本篇文章就給大家分享一個(gè)VSCode 中實(shí)時(shí)預(yù)覽Vue/React組件的插件,希望對(duì)大家有所幫助!

win10舊版組件是需要用戶自己去設(shè)置里面打開的,因?yàn)楹芏嗟慕M件平時(shí)都是默認(rèn)關(guān)閉的狀態(tài),首先我們需要進(jìn)入到設(shè)置里面,操作很簡(jiǎn)單,跟著下面的步驟來就可以了win10舊版組件在哪里打開1、點(diǎn)擊開始,然后點(diǎn)擊“win系統(tǒng)”2、點(diǎn)擊進(jìn)入控制面板3、再點(diǎn)擊下面的程序4、點(diǎn)擊“啟用或關(guān)閉win功能”5、在這里就可以選擇你要的打開了

Angular框架中組件的默認(rèn)顯示行為不是塊級(jí)元素。這種設(shè)計(jì)選擇促進(jìn)了組件樣式的封裝,并鼓勵(lì)開發(fā)人員有意識(shí)地定義每個(gè)組件的顯示方式。通過顯式設(shè)置CSS屬性 display,Angular組件的顯示可以完全控制,從而實(shí)現(xiàn)所需的布局和響應(yīng)能力。

Vue組件實(shí)戰(zhàn):分頁(yè)組件開發(fā)介紹在Web應(yīng)用程序中,分頁(yè)功能是必不可少的一個(gè)組件。一個(gè)好的分頁(yè)組件應(yīng)該展示簡(jiǎn)潔明了,功能豐富,而且易于集成和使用。在本文中,我們將介紹如何使用Vue.js框架來開發(fā)一個(gè)高度可定制化的分頁(yè)組件。我們將通過代碼示例來詳細(xì)說明如何使用Vue組件開發(fā)。技術(shù)棧Vue.js2.xJavaScript(ES6)HTML5和CSS3開發(fā)環(huán)

Vue組件開發(fā):進(jìn)度條組件實(shí)現(xiàn)方法前言:在Web開發(fā)中,進(jìn)度條是一種常見的UI組件,在數(shù)據(jù)請(qǐng)求、文件上傳、表單提交等場(chǎng)景中常用來顯示操作的進(jìn)度。在Vue.js中,通過自定義組件的方式,我們可以很方便地實(shí)現(xiàn)一個(gè)進(jìn)度條組件,本文將介紹一種實(shí)現(xiàn)方法,并提供具體的代碼示例。希望能對(duì)Vue.js初學(xué)者有所幫助。組件的結(jié)構(gòu)和樣式首先,我們需要定義進(jìn)度條組件的基本結(jié)構(gòu)和樣
