亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

對于Yii框架組件和事件行為管理的解析

2020-03-22 20:30:38
字體:
供稿:網(wǎng)友
這篇文章主要介紹了html' target='_blank'>Yii框架組件和事件行為管理,詳細分析了Yii框架組件管理與行為管理的原理與使用技巧,需要的朋友可以參考下

本文實例講述了Yii框架組件和事件行為管理。分享給大家供大家參考,具體如下:

Yii是一個基于組件、用于開發(fā)大型 Web 應(yīng)用的高性能 PHP 框架。CComponent幾乎是所有類的基類,它控制著組件與事件的管理,其方法與屬性如下,私有變量$_e數(shù)據(jù)存放事件(evnet,有些地方叫hook),$_m數(shù)組存放行為(behavior)。

組件管理

YII是一個純oop框架,很多類中的成員變量的受保護或者私有的,CComponent中利用php中的魔術(shù)方法__get(),__set()來訪問和設(shè)置屬性,但這些方法的作用遠不指這些。下面用__get()來說明

public function __get($name) $getter= get .$name; if(method_exists($this,$getter)) return $this- $getter(); else if(strncasecmp($name, on ,2)===0 method_exists($this,$name)) // duplicating getEventHandlers() here for performance $name=strtolower($name); if(!isset($this- _e[$name])) $this- _e[$name]=new CList; return $this- _e[$name]; else if(isset($this- _m[$name])) return $this- _m[$name]; else if(is_array($this- _m)) foreach($this- _m as $object) if($object- getEnabled() (property_exists($object,$name) || $object- canGetProperty($name))) return $object- $name; throw new CException(Yii::t( yii , Property {class}.{property} is not defined. , array( {class} = get_class($this), {property} = $name)));}

當CComponent或者其子類對象實例$obj- name的時候,__get($name)方法:

1、首先判斷實例中是否有g(shù)etName()方法,如果有則返回 ,如果沒有執(zhí)行第2步

2、判斷是否是以on開頭的,以on開頭的一般都是CComponent子類中預留的事件,用與掛在事件,通過method_exists($this,$name)判斷該name是否存在類的實例中,如果存在,返回事件,否則執(zhí)行第3步

3、如果name存在行為數(shù)組中,返回改行為,如果不存在,執(zhí)行第4步

4、遍歷行為數(shù)組,數(shù)組中行為是CBehavior子類的實例,而CBehavior又是CComponent中子類,所以用遞歸的方法獲取行為中的方法,如果沒有,執(zhí)行第5步

5、拋出異常:請求的屬性不存在。

在CComponent子類中可以重載__get()方法,如在CModule中加入了獲取組件的判斷。這就注意一個問題了屬性和組件名最好不要重名,因為程序會優(yōu)先加載組件,可能得到的不是我們想要的屬性,如果必須重名的話,就要用getter獲取屬性。

public function __get($name) if($this- hasComponent($name)) return $this- getComponent($name); else return parent::__get($name);}

關(guān)于組件的加載與創(chuàng)建,上篇YII框架分析筆記1:YII執(zhí)行流程中的第3點中有個疑問:注冊框架核心組件的時候一下子加載這么多,是不是影響性能呢?其實沒有,注冊的時候只是把組件和其對應(yīng)的配置用鍵值對的形式保存在數(shù)組中(預加載的除外),當用到時候才像上面那樣去創(chuàng)建組件,會通過YIIBase中的createComponent()方法創(chuàng)建,并初始化。通過CModule或其子孫類(如CWebApplication)調(diào)用__get()或getComponent()獲取組件時,CModule通過$_components數(shù)組建立對象池,確保每個組件在一次請求中只實例化一次。

事件行為管理

事件相當于對一個組件的擴展或者插件,以組件中預留的鉤子實現(xiàn)組件內(nèi)部調(diào)用外部、外部對組件部分控制。在CComponent子類中可以定義以on開頭的方法為事件,類似于js中的onclick、onchange等,其實原理差不多。所有事件是與CComponent在同一文件中CEvent的子類。

/*** Raised right BEFORE the application processes the request.* @param CEvent $event the event parameterpublic function onBeginRequest($event) $this- raiseEvent( onBeginRequest ,$event);* Runs the application.* This method loads static application components. Derived classes usually overrides this* method to do more application-specific tasks.* Remember to call the parent implementation so that static application components are loaded.public function run() if($this- hasEventHandler( onBeginRequest )) $this- onBeginRequest(new CEvent($this)); $this- processRequest(); if($this- hasEventHandler( onEndRequest )) $this- onEndRequest(new CEvent($this));}

比如在CApplication中調(diào)用run()方法在處理請求之前先判斷外部是否傳人onBeginRequest事件的句柄,如果有則通過onBeginRequest($event)方法調(diào)用CComponent中的raiseEvent()方法執(zhí)行句柄中的函數(shù)或者方法。

行為是事件的升級版,所有的行為都是CBehavior的子類。分析上面的__get()方法分析第4步可以看出來行為的作用是完全擴展組件的特性,可以是屬性、方法、事件甚至行為,這樣使程序開發(fā)更加靈活。

行為的另一個作用是將相似事件句柄放在一起,在行為執(zhí)行attach()方法的時候會將events()方法中返回的事件句柄綁定,這樣做達到方面管理和擴展的目的。比如CModelBehavior中將model相關(guān)的事件集中起來,便于其子類的復用,當我們需求為model添加行為的時候可以繼承它。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,更多相關(guān)內(nèi)容請關(guān)注PHP !

相關(guān)推薦:

關(guān)于yii分頁組件的用法

關(guān)于Yii數(shù)據(jù)模型中rules類驗證器的用法

以上就是對于Yii框架組件和事件行為管理的解析的詳細內(nèi)容,PHP教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
神马影院我不卡午夜| 欧美日韩国产999| 国产99久久| 不卡中文一二三区| 中文字幕免费一区二区| 国产精品后入内射日本在线观看| 手机av免费观看| 午夜欧美视频在线观看| 在线中文字幕网站| wwwav在线播放| 先锋影音在线播放av| 国产免费网址| 精品欧美一区二区三区| 中文字幕免费一区二区| 开心丁香婷婷深爱五月| 久久久久免费精品| 在线亚洲一区| www.久久网| 亚洲先锋成人| 精品中文字幕视频| www.一区二区.com| 91丨九色porny丨蝌蚪| 色综合一个色综合| 免费黄色在线观看| 日批视频在线看| 欧美伦理视频网站| 97国产一区二区精品久久呦| 91污片在线观看| 日韩动漫在线观看| 国产情侣激情自拍| 欧美三级超在线视频| 精品按摩偷拍| 狠狠久久伊人| 激情亚洲另类图片区小说区| 亚洲第一在线| 一区中文字幕在线观看| 97超碰人人爽| 97人人做人人爱| 午夜天堂在线观看| 欧美特黄一区| 日本三级在线观看网站| 成人涩涩网站| 99国产精品无码| 久久综合丝袜日本网| 青娱乐国产盛宴| 蜜桃成人精品| 亚洲自拍偷拍区| 欧美激情a∨在线视频播放| 日本高清视色| 在线免费看黄色片| 一区二区电影在线观看| 国产又粗又猛又爽视频| 国产污视频在线| 一区二区中文字| 91麻豆成人久久精品二区三区| 免费看的黄色网| 成人涩涩小片视频日本| 高清成人av| 欧美有码在线观看视频| 亚洲免费观看高清| 国产又粗又猛又爽又黄的视频小说| 狠狠人妻久久久久久综合| 亚洲天堂aaa| 午夜精品一区二区三区在线| 四季av在线一区二区三区| 欧美日韩一区二区国产| 性欧美极品另类| 国产欧美精品va在线观看| 日韩欧美精品在线观看视频| 免费大秀视频在线播放| 久艹视频在线观看| 一本一道久久a久久精品综合蜜臀| 日本www在线播放| 天天色天天操天天| 一个人看的www视频免费在线观看| 神马久久桃色视频| 精品国产第一页| 日本a一级在线免费播放| 欧美va亚洲va香蕉在线| 国产中年熟女高潮大集合| 欧美bbbxxxxx| 欧美手机视频| 中文字幕永久免费| 日本成人黄色免费看| 亚洲精品成人久久| 欧美日韩一区 二区 三区 久久精品| 国产农村妇女毛片精品久久莱园子| 69视频免费看| 久久免费国产| 国产免费人做人爱午夜视频| 国产精品一区二区三区成人| 福利一区二区免费视频| 九九精品视频在线观看| 色多多国产成人永久免费网站| 国产69精品久久久久9999apgf| 国产麻豆一精品一男同| 国产精品狠色婷| 成人18网站| 亚州视频一区二区三区| 欧美中文字幕在线| 综合激情丁香| 欧美性视频一区二区三区| 日韩精品在线不卡| 亚洲精品综合精品自拍| 亚洲一级黄色片| av日韩一区二区三区| 久久久综合精品| 欧美在线观看网站| 日韩av手机版| 亚洲精品成人悠悠色影视| 日本一区二区三区国色天香| 亚洲区免费影片| 黄动漫视频高清在线| 中文一区一区三区免费| 黄色国产网站在线播放| 久久亚洲综合色| 超碰99在线| 日韩久久一区二区三区| 精品中文字幕在线2019| 3d动漫成人在线| 可以看美女隐私的网站| 天天做日日爱夜夜爽| 亚洲欧美成人vr| 精品欧美aⅴ在线网站| 青青草在线播放| 亚洲中文字幕无码一区| 亚洲欧美福利一区二区| 亚洲第一天堂影院| 中文字幕亚洲无线码在线一区| 一级片视频在线观看| 8050国产精品久久久久久| 亚洲成年人影院在线| 欧美成人精品影院| 国产精品羞羞答答| 黄瓜视频在线免费观看| av官网在线观看| 两个人免费视频观看日本| 尤物av无码色av无码| 亚洲欧美日本精品| 日韩aaaa| 国产精品久久久免费观看| 91小视频在线播放| 特级丰满少妇一级aaaa爱毛片| 精品久久一区二区三区蜜桃| 丰满人妻一区二区三区四区| 日韩写真福利视频在线| 国产精品久久久久久久岛一牛影视| 7色.com| 国产精品久久久久久久久久尿| 久久国产日本精品| 九九九九九九精品| 亚洲日本护士毛茸茸| 超碰人人在线| 91久久国产综合久久91| 香蕉久久夜色精品国产| 久久精品国产亚洲AV无码男同| 拍拍拍无挡免费播放视频在线观看| 中文字幕日本乱码精品影院| 蜜乳av另类精品一区二区| 国产欧美精品va在线观看| 中文字字幕一区二区三区四区五区| 国产精品999视频| 亚洲精品福利| 欧美俄罗斯乱妇| 国产精品丝袜一区二区三区| 久久av一区二区三| 国产一区二区三区不卡视频网站| 中文字幕一区二区三区不卡| 日日干天夜夜| 午夜在线激情影院| 午夜视频在线观看精品中文| √资源天堂中文在线| 天堂√中文最新版在线| 久久精品日产第一区二区三区精品版| 国产精品一区视频网站| 97国产精东麻豆人妻电影| 一级毛片美女欧洲| 日韩乱码人妻无码中文字幕久久| jizz日本18| 国产v日韩v欧美v| 欧美深夜福利视频| 在线观看日韩精品| 亚洲国产成人一区| 韩国午夜理伦三级不卡影院| 91在线看国产| 国产精品人人妻人人爽| 国产欧美精品在线观看| 日韩av综合网| 国产一精品一aⅴ一免费| 国产av人人夜夜澡人人爽麻豆| 国产精品无码一区| 欧美三级不卡| 日本精品一区二区三区不卡无字幕| 理论片在线观看理伦片| 六月丁香在线视频| 日皮视频免费观看| 一区二区三区中文在线| 欧美久久综合性欧美| 精品人妻一区二区三区三区四区| 好吊妞国产欧美日韩免费观看网站| 色天天色综合| 欧美bbbxxxxx| 亚洲摸下面视频| 免费成人在线电影| 亚洲精品视频啊美女在线直播| 国内久久视频| 九九视频九九热| 日本久久久久久久久久久久| 欧美激情一区二区三区全黄| 2021中文字幕一区亚洲| 亚洲精品国产一区二区| 亚洲国产专区| 91观看网站| 午夜av噜噜噜噜噜噜| 91在线视频成人| 亚洲免费毛片网站| 日本美女一区二区| 日韩久久99| 91精品国产电影| 精品成人一区二区三区| 日韩精品视频一区二区| 国产成人av一区二区三区不卡| 粉嫩欧美一区二区三区高清影视| 久久丝袜美腿综合| 亚洲香蕉久久| 国产米奇在线777精品观看| 欧美午夜精品久久久久久人妖| www.日本高清视频| 少妇精品一区二区| 黄网址在线观看| 精品久久久久久久久久久下田| 欧美精品播放| 国产又色又爽又黄又免费| 成人免费毛片在线观看| 午夜亚洲国产au精品一区二区| 成年人在线免费观看视频网站| 欧美乱大交做爰xxxⅹ小说| 国产v片在线观看| 三级在线免费观看| 户外极限露出调教在线视频| 欧美网站免费| 浮生影视网在线观看免费| 久久久精品视频免费| 在线观看导航| 青青草久久伊人| 国产精品自拍偷拍视频| 亚洲视频狠狠干| 成人欧美在线观看| 亚洲影院理伦片| 韩国午夜理伦三级不卡影院| 99国产精品久久久| 日韩一级在线| 欧美夫妻性生活| wwwcom羞羞网站| 一区二区三区黄色片| 成人在线电影网站| 日韩欧美一区在线| 亚洲三级国产| 巨大黑人video| 欧日韩不卡视频| 欧美激情一区二区三区久久久| 黄网址在线播放免费| 五月综合激情婷婷六月色窝| 亚洲精品极品少妇16p| 三级做a全过程在线观看| 国产精品久久久久久久天堂第1集| 国产极品在线观看| 国产.精品.日韩.另类.中文.在线.播放| 国产精品网站视频| 免费网站观看电影入口| 日韩欧美亚洲一区| 99国产精品久久久久| 国产伦精品一区二区三区照片91| 一区二区美女视频| 国产三级视频在线播放线观看| 欧美又大粗又爽又黄大片视频| 91亚洲无吗| 成人av网站免费| 日韩亚洲成人av在线| 黄色三级免费电影| 五福影院新址进入www1378| 国产精品视频流白浆免费视频| 久草在线最新视频| 欧美精品久久久久久久免费| 色屁屁www国产馆在线观看| 精品国产1区2区3区| 国产精品片aa在线观看| 成人国产精品免费观看视频| 精品日本一线二线三线不卡| av中文字幕不卡| 亚洲国产婷婷香蕉久久久久久| 国产成人无遮挡在线视频| 日本久久久久久久| 国模大胆一区二区三区| 在线看a视频| 一区二区三区区四区播放视频在线观看| 逼特逼视频在线| 国产精品视频网站在线观看| 色在线免费观看| 在线看国产日韩| 91高清国产视频| 肥臀熟女一区二区三区| 欧美国产精品一二三| 久久深夜福利| 国产成人一二片| 亚洲69av| 99久久国产视频| 亚洲女同性videos| 挪威xxxx性hd极品| 精品一区二区三区免费| 欧美黑粗硬大| 你懂的在线免费观看| 黄色片视频免费观看| 99久热在线精品视频观看| 成人免费在线视频网址| 黄污视频在线观看| 美女又黄又免费| 欧美成人禁片在线www| 麻豆av免费看| 超碰在线网站| 小舞被吸乳羞羞网站视频| 色狼人综合干| 国产精品精品国产| 在线免费高清一区二区三区| 久草视频手机在线观看| aⅴ在线视频男人的天堂| 亚洲午夜av在线| 国产欧美中文在线|