元件是YII框架application(應(yīng)用程式)的主要組成部分,它是 [yii\base\Component]的實(shí)例或子類別。元件有三個重要特徵(功能):
·屬性(properties)
·事件(events)
·行為(behaviors)
單獨(dú)或組合使用這些特徵,可以讓yii框架的類別變得更加易用和可自訂。舉個例子,引入一個使用者互動元件[yii\jui\DataPicker\data picker wigets],可以很輕鬆的在檢視中產(chǎn)生一個日期選擇控制項(xiàng)(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)大,但其開銷也大於普通的類別對象,原因在於元件需要額外的記憶體和CPU時間去處理事件(events)和行為(behaviors).如果你的元件不需要事件和行為這兩個特徵(函數(shù)),可以直接繼承[yii\base\Object] ,這樣你的元件在效能(效率)上和普通類別物件一致,且支援屬性(properties)。
寫一個繼承[yii\base\Component]或[yii\base\Object]的類,需要遵循以下約定:
????·假設(shè)你重寫了建構(gòu)函數(shù),必須定義一個參數(shù)$config,作為建構(gòu)子的最後一個參數(shù),此參數(shù)傳遞給父類別的建構(gòu)子使用
????·在重寫的建構(gòu)子的結(jié)尾必須呼叫父類別的建構(gòu)子
????·假設(shè)你重寫了[yii\base\Object: :init()|init()]方法,那麼必須在重寫的init方法開始呼叫父類別的init方法
舉個例子
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 } }
遵循如下範(fàn)例,可使你的元件在建立時屬性即可被配置(初始化):
$component = new MyClass(1, 2, ['prop1' => 3, 'prop2' => 4]); // alternatively $component = \Yii::createObject([ 'class' => MyClass::className(), 'prop1' => 3, 'prop2' => 4, ], [1, 2]);
提示:使用[Yii::createOject()]的方式看起來更加複雜,但是因?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ù)初始化,可以在這個時候設(shè)定默認(rèn)的屬性值;
(2)透過$config配置對象,在建構(gòu)函式裡透過物件配置可以覆寫預(yù)設(shè)值;
(3)在[yii\base\Object::init ()|init()]方法裡,進(jìn)行初始化後的配置。可以在init方法裡實(shí)現(xiàn)例行檢查和屬性正?;瘷z查;
(4)物件方法呼叫。
開始的三個階段都在建構(gòu)函數(shù)裡實(shí)現(xiàn),這意味著當(dāng)你得到一個物件的實(shí)例時,它已經(jīng)被初始化為適當(dāng)?shù)臓顟B(tài),可以被放心的使用。
PHP中文網(wǎng),有大量免費(fèi)的Yii入門教學(xué),歡迎大家學(xué)習(xí)!
以上是yii2中組件什麼意思的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

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

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

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

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

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

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

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

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

不少用戶在玩win10的的一些遊戲的時候總是會遇到一些問題,比如說卡屏和花屏等等情況,這個時候我們是可以採用打開directplay這個功能來解決的,而且功能的操作方法也很簡單。 win10舊版元件directplay怎麼安裝1、在搜尋框裡面輸入「控制臺」然後開啟2、檢視方式選擇大圖示3、找到「程式與功能」4、點(diǎn)選左側(cè)的啟用或關(guān)閉win功能5、選擇舊版這裡的勾選上就可以了

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

在VSCode中開發(fā)Vue/React元件時,怎麼即時預(yù)覽元件?本篇文章就跟大家分享一個VSCode 中即時預(yù)??覽Vue/React元件的插件,希望對大家有幫助!

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

win10舊版元件是需要使用者自己去設(shè)定裡面打開的,因?yàn)楹芏嗟脑綍r都是預(yù)設(shè)關(guān)閉的狀態(tài),首先我們需要進(jìn)入到設(shè)定裡面,操作很簡單,跟著下面的步驟來就可以了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框架中元件的預(yù)設(shè)顯示行為不是區(qū)塊級元素。這種設(shè)計(jì)選擇促進(jìn)了元件樣式的封裝,並鼓勵開發(fā)人員有意識地定義每個元件的顯示方式。透過明確設(shè)定CSS屬性 display,Angular組件的顯示可以完全控制,從而實(shí)現(xiàn)所需的佈局和響應(yīng)能力。

Vue元件實(shí)戰(zhàn):分頁元件開發(fā)介紹在網(wǎng)路應(yīng)用程式中,分頁功能是不可或缺的一個元件。一個好的分頁元件應(yīng)該展示簡潔明了,功能豐富,而且易於整合和使用。在本文中,我們將介紹如何使用Vue.js框架來開發(fā)一個高度可自訂化的分頁元件。我們將透過程式碼範(fàn)例來詳細(xì)說明如何使用Vue元件開發(fā)。技術(shù)堆疊Vue.js2.xJavaScript(ES6)HTML5和CSS3開發(fā)環(huán)

Vue元件開發(fā):進(jìn)度條元件實(shí)作方法前言:在Web開發(fā)中,進(jìn)度列是一種常見的UI元件,在資料要求、檔案上傳、表單提交等場景中常用來顯示作業(yè)的進(jìn)度。在Vue.js中,透過自訂元件的方式,我們可以很方便地實(shí)作一個進(jìn)度條元件,本文將介紹一種實(shí)作方法,並提供具體的程式碼範(fàn)例。希望能對Vue.js初學(xué)者有幫助。組件的結(jié)構(gòu)和樣式首先,我們需要定義進(jìn)度條組件的基本結(jié)構(gòu)和樣
