校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁(yè) > 知識(shí)庫(kù) > Yii框架核心組件類實(shí)例詳解

Yii框架核心組件類實(shí)例詳解

熱門標(biāo)簽:長(zhǎng)春人工外呼系統(tǒng)服務(wù)商 哪里辦理400電話 仁和怎么申請(qǐng)400開頭的電話 怎么向銷售公司推銷外呼系統(tǒng) 廣東地市地圖標(biāo)注 廣州防封卡外呼系統(tǒng)多少錢一個(gè)月 高德地圖標(biāo)注家 江西手機(jī)自動(dòng)外呼防封系統(tǒng)是什么 外呼系統(tǒng)撥打暫時(shí)無(wú)法接通

本文實(shí)例講述了Yii框架核心組件類。分享給大家供大家參考,具體如下:

CComponent類為YII框架的基于組件和事件驅(qū)動(dòng)編程提供了基礎(chǔ),YII框架中的大部分類都將CComponent類作為基類。

CComponent類為它的子類提供3個(gè)特性:

1、成員變量擴(kuò)展

通過(guò)定義兩個(gè)成員函數(shù)(getXXX/setXXX)來(lái)定義一個(gè)成員變量,比如:

public function getText() {…}
public function setText {…}

這樣就相當(dāng)于定義了一個(gè)$text成員變量,可以這樣調(diào)用

$a=new CComponent;
$a=$component->text; // 等價(jià)于$a=$component->getText();
$component->text='abc'; // 等價(jià)于$component->setText(‘a(chǎn)bc');

CComponent是通過(guò)魔術(shù)方法__get和__set來(lái)實(shí)現(xiàn)“成員變量擴(kuò)展”特性的,如果對(duì)類本身不存在的成員變量進(jìn)行操作時(shí),php會(huì)調(diào)用這個(gè)類 的__get和__set方法來(lái)進(jìn)行處理。CComponent利用這兩個(gè)魔術(shù)方法實(shí)現(xiàn)了“成員變量擴(kuò)展”特性。下圖描述了一個(gè)CComponent的子 類,它增加了active和sessionName兩個(gè)成員變量,該圖描述了對(duì)于這兩個(gè)成員變量的調(diào)用流程。

面向?qū)ο缶幊讨兄苯佣x一個(gè)成員變量就可以了,為什么CComponent要通過(guò)定義2個(gè)函數(shù)來(lái)實(shí)現(xiàn)一個(gè)成員變量呢?一個(gè)主要得原因是需要對(duì)成員變 量進(jìn)行“延時(shí)加載”,一般情況下類的成員變量是在構(gòu)造函數(shù)或者初始化函數(shù)進(jìn)行統(tǒng)一賦值,但是在一次web請(qǐng)求的處理過(guò)程中不是每個(gè)成員變量都會(huì)被使用,比 如App類中定義了兩個(gè)成員變量:$cache和$db($cache是一個(gè)緩存對(duì)象,$db是一個(gè)數(shù)據(jù)庫(kù)鏈接對(duì)象),這兩個(gè)對(duì)象在App類初始化的時(shí)候 創(chuàng)建,但是一個(gè)web網(wǎng)站的有些頁(yè)面,它內(nèi)容可以通過(guò)緩存獲取,那么數(shù)據(jù)庫(kù)鏈接對(duì)象其實(shí)就不需要?jiǎng)?chuàng)建。如果將App定義為CComponent的子類,在 App類中定義兩個(gè)方法:getCache/getDb,這樣就可以做到第一次使用db成員變量的時(shí)候,才調(diào)用getDb函數(shù)來(lái)進(jìn)行數(shù)據(jù)庫(kù)鏈接的初始化, 從而實(shí)現(xiàn)延時(shí)加載——即在第一次使用時(shí)進(jìn)行初始化。雖然延時(shí)加載會(huì)增加一次函數(shù)調(diào)用,但是可以減少不必要的成員變量的初始化(總體上其實(shí)是提升了網(wǎng)站的訪 問(wèn)速度),而且可以使得我們的代碼更加易維護(hù)、易擴(kuò)展。

延時(shí)加載應(yīng)該是“成員變量擴(kuò)展”特性的最重要的用途,當(dāng)然這個(gè)特性還會(huì)有其它用途,想一想,當(dāng)你操作一個(gè)成員變量的時(shí)候,你其實(shí)是在調(diào)用getXXX和setXXX成員函數(shù),你是在調(diào)用一段代碼!

2、事件模型

事件模型就是設(shè)計(jì)模式中的“觀察者模式”:當(dāng)對(duì)象的狀態(tài)發(fā)生了變化,那么這個(gè)對(duì)象可以將該事件通知其它對(duì)象。

為了使用事件模型,需要實(shí)現(xiàn)這三個(gè)步驟:1、定義事件;2、注冊(cè)事件句柄;3、觸發(fā)事件。
CComponent的子類通過(guò)定義一個(gè)以on打頭的成員函數(shù)來(lái)定義一個(gè)事件,比如:public function onClick(){…},接著通過(guò)調(diào)用attachEventHandler成員函數(shù)來(lái)注冊(cè)事件句柄(可以注冊(cè)多個(gè)事件句柄),最后通過(guò)調(diào)用 raiseEvent來(lái)觸發(fā)事件。

CComponent類使用一個(gè)私有的成員變量來(lái)保存事件以及處理該事件的所有句柄,該成員變量可以看作一個(gè)hash表,hash表的key是事件的名稱,hash表的value是事件處理函數(shù)鏈表。

3、行為類綁定

有兩種辦法可以對(duì)類添加特性:1、直接修改這個(gè)類的代碼,添加一些成員函數(shù)和成員變量;2、派生,通過(guò)子類來(lái)擴(kuò)展。很明顯第二種方法更加易維護(hù)、易擴(kuò)展。如果需要對(duì)一個(gè)類添加多個(gè)特性(多人在不同時(shí)期),那么需要進(jìn)行多級(jí)派生,這顯然加大了維護(hù)成本。

CComponent使用一種特殊的方式對(duì)類信息擴(kuò)展——行為類綁定。行為類是一個(gè)CBehavior的子類,CComponent可以將一個(gè)或者多個(gè) CBehavior類的成員函數(shù)和成員變量添加到自己身上,并且在不需要的時(shí)候卸載掉某些CBehavior類。下面是一個(gè)簡(jiǎn)單的例子:

//計(jì)算器類
class Calculator extends CBehavior
{
public function add($x, $y) { return $x + $y; }
public function sub($x, $y) { return $x – $y; }
…
}
$comp = new CComponent();
//為我的類添加計(jì)算器功能
$comp->attachbehavior(‘calculator', new Calculator());
$comp->add(2, 5);
$comp->sub(2, 5);

CComponent通過(guò)__get、__set和__call這3個(gè)魔術(shù)方法來(lái)實(shí)現(xiàn)“行為類綁定”這個(gè)特性,當(dāng)調(diào)用CComponent類不存在的成員 變量和成員方法的時(shí)候,CComponent類會(huì)通過(guò)這三個(gè)魔法方法在“動(dòng)態(tài)綁定的行為對(duì)象”上進(jìn)行查找。即將不存在的成員變量和成員方法路由到“動(dòng)態(tài)綁 定對(duì)象”上。

可以用3句話來(lái)總結(jié)CComponent類的特性:

1、 更好的配置一個(gè)對(duì)象,當(dāng)設(shè)置對(duì)象的成員變量的時(shí)候,其實(shí)是運(yùn)行一段代碼;
2、 更好的監(jiān)聽一個(gè)對(duì)象,當(dāng)對(duì)象的內(nèi)部狀態(tài)發(fā)生變化的時(shí)候,其它對(duì)象可以得到通知;
3、 更好的擴(kuò)展一個(gè)對(duì)象,可以給一個(gè)對(duì)象增加成員變量和成員函數(shù),還能監(jiān)聽這個(gè)對(duì)象的狀態(tài)。

更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家基于Yii框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • Yii框架學(xué)習(xí)筆記之應(yīng)用組件操作示例
  • yii2高級(jí)應(yīng)用之自定義組件實(shí)現(xiàn)全局使用圖片上傳功能的方法
  • Yii框架組件和事件行為管理詳解
  • Yii擴(kuò)展組件編寫方法實(shí)例分析
  • yii2行為的方法如何注入到組件類中詳解
  • Yii框架響應(yīng)組件用法實(shí)例分析
  • PHP的Yii框架中移除組件所綁定的行為的方法
  • Yii框架自定義數(shù)據(jù)庫(kù)操作組件示例
  • Yii2中組件的注冊(cè)與創(chuàng)建方法
  • Yii框架組件的事件機(jī)制原理與用法分析
  • Yii框架應(yīng)用組件用法實(shí)例分析

標(biāo)簽:文山 濮陽(yáng) 惠州 廈門 湘西 黔東 海北 梅河口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Yii框架核心組件類實(shí)例詳解》,本文關(guān)鍵詞  Yii,框架,核心,組件,類,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Yii框架核心組件類實(shí)例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Yii框架核心組件類實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美性三三影院| 亚洲一线二线三线久久久| 日本三级韩国三级欧美三级| 欧美日韩国产另类一区| 性做久久久久久免费观看欧美| 欧美影院一区二区三区| 天堂资源在线中文精品| 欧美一级国产精品| 国产精品中文字幕日韩精品 | 久久精品99国产精品日本| 日韩一区二区三区免费看| 精品一二三四区| 国产清纯美女被跳蛋高潮一区二区久久w| 国产精品一区二区在线观看网站| 国产精品国产三级国产专播品爱网| 一本大道久久a久久精二百| 亚洲超碰精品一区二区| 精品噜噜噜噜久久久久久久久试看| 国内欧美视频一区二区| 国产精品美女久久久久久久| 色天天综合久久久久综合片| 日本不卡123| 国产精品国产三级国产有无不卡| 欧美三级中文字幕在线观看| 精品系列免费在线观看| 18涩涩午夜精品.www| 欧美日韩一级黄| 成人福利视频在线| 一区二区久久久| 精品久久人人做人人爱| 91影院在线免费观看| 欧美aaaaa成人免费观看视频| 国产欧美精品国产国产专区| 欧美日韩国产天堂| 成人精品亚洲人成在线| 日韩激情av在线| 中文字幕日韩一区| 日韩一本二本av| 色婷婷久久综合| 国产综合久久久久久鬼色| 亚洲黄色av一区| 日本一区二区三区四区在线视频 | 91精品在线麻豆| 不卡一区二区在线| 青青青伊人色综合久久| 日韩毛片精品高清免费| 久久综合中文字幕| 欧美日韩一二区| 99亚偷拍自图区亚洲| 久久99国产精品久久99果冻传媒| 一区二区激情视频| 国产精品国产自产拍高清av| xfplay精品久久| 91精品欧美综合在线观看最新 | 国产精品一区二区在线观看网站 | 欧美成人官网二区| 欧美日韩激情在线| 日本电影欧美片| 成人精品亚洲人成在线| 国产精品一区二区三区99| 日产国产高清一区二区三区 | 欧美一卡二卡三卡四卡| 欧美性一区二区| 色噜噜狠狠成人网p站| 欧美亚洲自拍偷拍| 成人av集中营| 国产jizzjizz一区二区| 国产一区二区三区久久久| 日本视频一区二区三区| 日韩精品亚洲一区二区三区免费| 亚洲国产裸拍裸体视频在线观看乱了| 综合av第一页| 亚洲色图在线视频| 亚洲欧美激情在线| 亚洲欧洲精品一区二区精品久久久 | 麻豆国产91在线播放| 亚洲成人av免费| 亚洲电影一级片| 亚洲综合一区二区三区| 亚洲一二三专区| 亚洲一区二区三区视频在线播放| 一区二区三区欧美久久| 亚洲精品菠萝久久久久久久| 一区二区三区四区五区视频在线观看 | 亚洲色图.com| 亚洲精品国久久99热| 亚洲精品videosex极品| 亚洲一区二区欧美日韩| 亚洲成人777| 奇米色一区二区| 国产乱色国产精品免费视频| 国产高清视频一区| 99精品国产99久久久久久白柏| 91麻豆成人久久精品二区三区| 欧洲精品一区二区三区在线观看| 欧美午夜精品理论片a级按摩| 欧美久久一区二区| 精品久久久久久久久久久久包黑料 | 亚洲精选视频在线| 亚洲一区在线看| 日韩专区一卡二卡| 成人av电影在线观看| 一本一本久久a久久精品综合麻豆| 日本久久一区二区三区| 91精品国产综合久久精品性色 | 久久精品夜色噜噜亚洲a∨| 国产日韩欧美精品一区| 亚洲欧美韩国综合色| 日本亚洲最大的色成网站www| 国产美女在线观看一区| 色综合天天视频在线观看| 欧美视频自拍偷拍| 久久你懂得1024| 亚洲九九爱视频| 精品一区二区免费在线观看| 色综合中文字幕| 91精品国产色综合久久| 国产精品欧美精品| 五月天欧美精品| 波多野结衣欧美| 日韩一区二区三区在线| 亚洲欧美自拍偷拍色图| 婷婷丁香久久五月婷婷| 国v精品久久久网| 欧美电影一区二区三区| 中文天堂在线一区| 日韩国产精品久久久久久亚洲| 粉嫩一区二区三区在线看| 欧美日韩国产欧美日美国产精品| 欧美国产日产图区| 日本亚洲视频在线| 在线免费观看成人短视频| 久久网这里都是精品| 亚洲不卡av一区二区三区| 丁香婷婷综合激情五月色| 欧美高清精品3d| 综合中文字幕亚洲| 国产精品一区在线观看你懂的| 欧美日韩国产另类不卡| 国产精品国产三级国产aⅴ入口| 另类小说综合欧美亚洲| 欧美午夜电影一区| 综合亚洲深深色噜噜狠狠网站| 久久精品国产在热久久| 欧美最新大片在线看| 最新久久zyz资源站| 国产一区二区精品久久99| 欧美高清你懂得| 亚洲国产视频一区| 91麻豆国产福利精品| 中文字幕精品一区二区三区精品| 久久av中文字幕片| 欧美一区二区三区视频在线| 亚洲国产精品久久艾草纯爱| 色哟哟一区二区三区| 中文成人av在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲精品免费一二三区| 成人精品亚洲人成在线| 国产欧美日韩在线看| 蜜桃视频一区二区| 日韩欧美一区中文| 蜜桃av一区二区三区| 日韩一级大片在线| 日韩中文字幕亚洲一区二区va在线| 色成年激情久久综合| 一区二区三区蜜桃网| 色哟哟国产精品| 亚洲一区二区欧美激情| 欧美亚洲综合一区| 亚洲视频每日更新| 91视频91自| 亚洲激情欧美激情| 在线观看日韩国产| 亚洲自拍偷拍欧美| 欧美日韩免费视频| 亚洲在线视频一区| 欧美日韩激情一区二区| 琪琪一区二区三区| 欧美sm美女调教| 国产电影精品久久禁18| 欧美国产成人在线| 91免费观看视频在线| 一区二区三区高清不卡| 欧美日韩高清一区二区| 丝袜a∨在线一区二区三区不卡| 777色狠狠一区二区三区| 蜜臀av在线播放一区二区三区| 日韩欧美国产精品| 经典三级在线一区| 国产精品免费久久久久| 91黄色激情网站| 琪琪久久久久日韩精品| 欧美极品少妇xxxxⅹ高跟鞋| 9久草视频在线视频精品| 亚洲在线观看免费| 久久综合九色综合欧美98| 99精品视频一区| 亚洲二区在线观看| 久久久国产精品麻豆|