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

首頁(yè) > 擴(kuò)展 > MVC > 正文

Zend的MVC機(jī)制使用分析(一)

2024-09-06 20:44:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

代碼

復(fù)制代碼 代碼如下:www.CuoXIn.com

$front = Zend_Controller_Front::getInstance();
Zend_Layout::startMvc(array('layoutPath' => USVN_LAYOUTS_DIR));

$front->setRequest(new USVN_Controller_Request_Http());
$front->throwExceptions(true);
$front->setBaseUrl($config->url->base);

$router = new Zend_Controller_Router_Rewrite();
$routes_config = new USVN_Config_Ini(USVN_ROUTES_CONFIG_FILE, USVN_CONFIG_SECTION);
$router->addConfig($routes_config, 'routes');
$front->setRouter($router);
$front->setControllerDirectory(USVN_CONTROLLERS_DIR);

Zend_Controller_Front::getInstance()->dispatch();

分析

首先看下Zend_Controller_Front::getInstance是調(diào)用單例模式,實(shí)例化了它的內(nèi)部屬性_plugins,實(shí)例化了一個(gè)Zend_Controller_Plugin_Broker類。

 

這個(gè)類是管理front的插件的類。先看一個(gè)Front中的方法public function registerPlugin(Zend_Controller_Plugin_Abstract $plugin, $stackIndex = null)

意思是如果你有一個(gè)自己的插件要插入使用的話,調(diào)用這個(gè)函數(shù)能把你自己的插件委托給Zend_Controller_Plugin_Broker使用。

如果你有愿望繼續(xù)跟下去你會(huì)看到注冊(cè)插件做的一件最根本的事情就是把request和response放入到你的插件中去(setRequest和setResponse)。

class Zend_Controller_Plugin_Broker extends Zend_Controller_Plugin_Abstract

這個(gè)實(shí)現(xiàn)了抽象類Zend_Controller_Plugin_Abstract。
Zend_Controller_Plugin_Abstract是所有插件的抽象類,所有用戶自己定義的插件或者Zend已有的插件都要從這個(gè)類繼承。這里就看到了,前端控制器Front就是使用broker作為用戶插件注冊(cè)。

這個(gè)抽象類可以被實(shí)現(xiàn)的函數(shù)有:

routeStartup: 在路由發(fā)送請(qǐng)求前被調(diào)用

routeShutdown:在路由完成請(qǐng)求后被調(diào)用

dispatchLoopStartup:在進(jìn)入分發(fā)循環(huán)(dispatch loop)前被調(diào)用

Predispatch:在動(dòng)作由分發(fā)器分發(fā)前被調(diào)用

postdispatch:在動(dòng)作由路由器分發(fā)后被調(diào)用

dispatchLoopShutdown:在進(jìn)入分發(fā)循環(huán)(dispatch loop)后被調(diào)用

 

我們還看到了getRequest, getResponse兩個(gè)方法,我們可以通過(guò)他們分別從控制器中獲取request對(duì)象和response對(duì)象

 

好了,扯遠(yuǎn)了,回到最開(kāi)始的代碼,Zend_Controller_Front::getInstance實(shí)際上來(lái)看做的事情就是注冊(cè)了一個(gè)broker插件放到$front中。

 

下面一行代碼

Zend_Layout::startMvc(array('layoutPath' => USVN_LAYOUTS_DIR));

看到Zend/Layout.php中,startMvc做了兩件事:首先是調(diào)用自己的構(gòu)造函數(shù)來(lái)實(shí)例化自己(切記帶著initMvc參數(shù)為true),然后是設(shè)置參數(shù)。

Zend_Layout的構(gòu)造函數(shù)比較復(fù)雜,就跟到里面看看。首先也是設(shè)置傳遞進(jìn)來(lái)的參數(shù)$options,我們這個(gè)例子中是傳遞進(jìn)來(lái)Array ( [layoutPath] => /var/www/html/usvn/app/layouts )這個(gè)array作為options,構(gòu)造函數(shù)就是調(diào)用$this->setOptions($options);

這個(gè)setOptions做的事是根據(jù)array的每個(gè)key,調(diào)用$this->set$key($val);也就是說(shuō),以上面的例子來(lái)說(shuō),setOptions調(diào)用了setLayoutPath("/var/www/html/usvn/app/layouts")

順藤摸瓜,setLayoutPath的功能是設(shè)置自己類的this->_layout為"/var/www/html/usvn/app/layouts", 然后設(shè)置_enable為true;這兩個(gè)屬性記住,以后會(huì)有使用的。

 

回退到Zend_Layout的構(gòu)造函數(shù),初始化options之后是調(diào)用了_initVarContainer();

這個(gè)函數(shù)做了這么個(gè)事情:

$this->_container = Zend_View_Helper_Placeholder_Registry::getRegistry()->getContainer(__CLASS__);

又出現(xiàn)了Zend_View_Helper_Placeholder_Registry(我翻譯為:Zend視圖助手注冊(cè)表)

 

getRegistry() 將Zend_View_Helper_Placeholder_Registry作為key,Zend_View_Helper_Placeholder_Registry類的實(shí)例作為value注冊(cè)到之前見(jiàn)過(guò)的Zend_Registry中。這個(gè)類的構(gòu)造函數(shù)就什么事都沒(méi)有。

 

getRegistry()返回了Zend_View_Helper_Placeholder_Registry實(shí)例,下面調(diào)用getContainer(__CLASS__)。 這里的__CLASS__是什么,當(dāng)前調(diào)用的類,自然就是Zend_Layout了。這里是getContainer("Zend_Layout")

 

進(jìn)入到getContainer里面,它調(diào)用了createContainer("Zend_Layout")。createContainer("Zend_Layout")是在Registry中以Zend_Layout為key,Zend_View_Helper_Placeholder_Container類為value的array。

 

Zend_View_Helper_Placeholder_Container實(shí)現(xiàn)抽象類Zend_View_Helper_Placeholder_Container_Abstract,這個(gè)抽象類實(shí)際上也是一個(gè)ArrayObject,這個(gè)在之前的文章有提到過(guò)了,是一個(gè)和泛型類一樣的東東。

 

好了,這里不跟下去了,回頭到Zend_Layout的構(gòu)造函數(shù)

_initVarContainer結(jié)束了,下面是調(diào)用兩個(gè)重要的函數(shù):

$this->_setMvcEnabled(true);

$this->_initMvc();

Mvc大家一定很熟悉,我們來(lái)看看這里是怎么個(gè)MVC的

setMvcEnabled沒(méi)什么特別,設(shè)置標(biāo)志位this->_mvcEnabled

_initMvc做了兩件事,_initPlugin和_initHelper。

先看initPlugin:

獲取PluginClass,這里的pluginClass就是Zend_Layout_Controller_Plugin_Layout,可以看到,這里是作為一個(gè)插件的形式放進(jìn)來(lái)的。

接著又獲取了Zend_Controller_Front的實(shí)例,調(diào)用:

$front->registerPlugin(

new $pluginClass($this),

99

);

 

記得前面對(duì)Zend_Controller_Front的分析不?里面有registerPlugin的函數(shù),是將插件委托給front的broker來(lái)用。有人就會(huì)問(wèn)后面的99是什么意思?是插件的索引順序,越后面的插件越后執(zhí)行插件的動(dòng)作。

 

下面再看_initHelper:

獲取helperClass,這里的helperClass就是Zend_Layout_Controller_Action_Helper_Layout

if (!Zend_Controller_Action_HelperBroker::hasHelper('layout')) {

。。。

Zend_Controller_Action_HelperBroker::getStack()->offsetSet(-90, new $helperClass($this));

}

如果Action_HelperBroker沒(méi)有l(wèi)ayout的helper的話

就執(zhí)行下面的offsetSet命令。將-90和Zend_Layout_Controller_Action_Helper_Layout實(shí)例作為參數(shù)傳入。

和plugin同樣的關(guān)系,將Zend_Layout_Controller_Action_Helper_Layout實(shí)例作為value存入到this->_helpersByPriority和this->_helpersByNameRef去了

前面的-90是權(quán)重,也是要保證這個(gè)helper是最后調(diào)用(看最后一行是krsort排序)

好了,Layout的構(gòu)造函數(shù)就這樣分析結(jié)束了。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧美变态xxxx| 成人免费无遮挡无码黄漫视频| 99国产精品国产精品久久| 欧美成人日本| |精品福利一区二区三区| 色综合久久综合网欧美综合网| 欧美精品九九| 在线观看成人免费视频| 污视频在线播放| 国产精品伊人久久| 亚洲承认视频| 综合久久2023| 男人的天堂av高清在线| 日韩少妇与小伙激情| 日本不卡一二三区黄网| av不卡在线| 欧美日韩国产精品激情在线播放| 浮力影院网站午夜| 97精品在线观看| 色www精品视频在线观看| 成人影院入口| 美女扒开腿让男人桶爽久久动漫| 好吊色一区二区三区| 日韩精品视频免费| 色天天综合色天天久久| 国产毛片毛片毛片毛片| 亚洲精选在线视频| 欧美一级特黄高清视频| 成人午夜视频在线| 天天插综合网| 大尺度在线观看| 寂寞护士中文字幕mp4| 亚洲欧洲无码一区二区三区| 成年人看的羞羞网站| 五月天电影免费在线观看一区| 99视频国产精品| 日韩国产欧美精品在线| 国产成人精品一区二| 国内精品自线一区二区三区视频| 人人狠狠综合久久亚洲婷婷| 粉嫩蜜臀av国产精品网站| 国产精品久久久久高潮| 久久久久日韩精品久久久男男| 久久国产欧美| 国产麻豆天美果冻无码视频| 亚洲精美视频| 成人毛片100部免费看| 免费在线国产视频| 爽好久久久欧美精品| 91在线观看免费高清完整版在线观看| www亚洲成人| 欧美日本国产视频| 男人的天堂va免费视频| 少妇特黄一区二区三区| 亚洲美女自拍偷拍| 久蕉依人在线视频| 亚洲色图制服丝袜| 成人h动漫精品一区二| 亚洲男人天堂一区| 最新国产热播激情视频| www.av88| www在线观看免费| 久久99精品国产自在现线小黄鸭| 国产精品15p| 欧美乱做爰xxxⅹ久久久| 欧美日韩三级在线| av色综合久久天堂av色综合在| 97超碰最新| 91成人精品在线| 国产精品爽黄69天堂a| 国产女主播一区| 成年人在线免费看片| 日本ー区在线视频| 日韩一区二区免费在线电影| 久久看片网站| 美女被黑人爆操网站| 国产精品福利av| 免费成人蒂法| 日本中文在线视频| 色丁香婷婷综合久久| 第四色男人最爱上成人网| 亚洲国产欧美日本视频| 欧美精品在线网站| 亚洲欧洲国产伦综合| 手机在线视频你懂的| 一本大道熟女人妻中文字幕在线| 蜜桃传媒一区二区亚洲| 免费在线国产视频| 婷婷开心久久网| 情趣视频在线观看| 亚洲精品国产成人久久av盗摄| 国产高清日韩| 久久久久99精品成人片毛片| 久久久久久久尹人综合网亚洲| 熟年交尾五十路视频在线播放| 亚洲在线www| 美脚丝袜一区二区三区在线观看| 亚洲综合123| 石原莉奈在线亚洲三区| 欧美午夜精品在线| 欧美精品免费视频| 色偷偷噜噜噜亚洲男人| 国产精品久久久久久久久免费丝袜| 国产激情视频一区二区在线观看| 成人国产精品免费观看动漫| caoporn-草棚在线视频最| 538在线精品| 亚洲综合社区| 亚洲国产精品高清| 欧美日韩国产精品自在自线| 日韩视频免费在线播放| 欧美激情91| 激情美女网站| 亚洲成人自拍视频| 77thz桃花论族在线观看| 欧美电影免费观看高清| eeuss影院在线观看第一页| 好看的日韩精品| 日本一区二区三区四区| 怡红院成永久免费人全部视频| 免费成人深夜夜行p站| 视频一区国产精品| 国产成人午夜精品| 国产人妖在线观看| 欧美日韩亚洲在线| 国产精彩精品视频| 中国av一区二区三区| 欧美成人直播| 人妻少妇精品视频一区二区三区| 欧美日韩精品二区第二页| 不卡的av一区| 麻豆av在线播放| 婷婷激情5月天| 色综合久久一区二区三区| 欧美成人国产一区二区| 天堂网www中文在线| 黄色电影在线免费观看| 亚洲精品ww久久久久久p站| 国产精品高潮呻吟av| 久久亚洲天堂| av在线日韩国产精品| 欧美边添边摸边做边爱免费| 欧美一区二区久久| 免费男女羞羞的视频网站主页在线观看| 日韩欧美电影在线观看| 岛国一区二区三区高清视频| 1区2区在线| 亚洲一级二级三级在线免费观看| 日产国产高清一区二区三区| 99re6热在线精品视频播放速度| 91人妻一区二区三区| 99re在线视频精品| 9l国产精品久久久久麻豆| 精品久久国产| 毛片在线免费播放| 亚洲精品久久久久国产| 亚洲区小说区图片区qvod按摩| 欧美一区激情| 在线天堂中文字幕| 一色桃子av在线| 亚洲人和日本人hd| 日韩有码中文字幕在线| 日本超碰一区二区| 久久人妻精品白浆国产| 欧美激情在线一区二区| 91精品免费| 中文字幕久热精品在线视频| 国产精品高清一区二区| 欧美va在线| 国产精品久久久视频| 久久精品视频播放| 国产不卡精品视男人的天堂| 女同久久另类69精品国产| 成人在线短视频| 国产欧美一区二区三区网站| 草碰在线视频| 福利一区二区在线观看| 国产香蕉成人综合精品视频| 中国a一片一级一片| 色愁久久久久久| 日韩高清影视在线观看| 伊人精彩视频| 朝桐光av在线一区二区三区| www国产黄色| 亚洲免费综合| 日韩欧美国产综合一区| 葵司免费一区二区三区四区五区| 国产精品久久久久影院亚瑟| 欧美欧美欧美| 人人网欧美视频| 青春草在线观看| 最新中文字幕2018| 中文字幕免费在线观看| 国产成年妇视频| 国产精品300页| 这里只有精品在线观看视频| 成人av在线资源| 尤物网站在线看| 色婷婷在线播放| 自拍偷拍国产精品| 亚洲高清视频的网址| 3344国产永久在线观看视频| 日本女人黄色片| 国产精品手机在线| 波多野结衣大片| 精品少妇人妻一区二区黑料社区| 国产一线二线在线观看| 亚洲欧美综合| 人妻无码一区二区三区| 亚洲成人午夜在线| 久久久国产精品一区| 99视频入口| 久久一区二区电影| 亚洲а∨天堂久久精品2021| 四虎影视av| l8videosex性欧美69| 欧美高清xxx| 亚洲va久久久噜噜噜久久天堂| 亚洲人高潮女人毛茸茸| 国产一区亚洲一区| 欧美麻豆久久久久久中文| 91在线观看一区二区| 黑人巨大猛交丰满少妇| 性欧美超级视频| 正在播放木下凛凛xv99| 怡红院成永久免费人全部视频| 五月婷婷深爱五月| 91精品视频在线看| 中文字幕不卡av| 欧美美女一级片| 欧美成人aaaaⅴ片在线看| 精品女同一区二区三区在线观看| 久久精品国产精品国产精品污| 奇米色一区二区| 国产 日韩 欧美 精品| 亚洲精品福利电影| 欧美另类一区二区| 一区二区三区久久精品| 自拍自偷一区二区三区| 国产精品国产三级国产aⅴ| 国产黄a三级三级| 日本h片在线| 伊人久久在线| 成人超碰在线| 欧美激情精品久久久久久| 在线观看中文| 曰本大片免费观看视频| 亚洲最新av网址| 国产男女无遮挡| 亚洲视频欧美在线| 精品国产一区二区三区久久| 亚洲第一成人网站| 无码人妻av一区二区三区波多野| 黄色成年人视频在线观看| 91成人在线免费观看| 日韩av成人网| 日韩免费在线观看| 97人妻精品视频一区| 艳色歌舞团一区二区三区| 少妇激情av一区二区三区| 亚洲免费观看高清在线观看| 久久99精品久久久久久琪琪| 宅男在线国产精品| 亚洲欧洲国产一区| 精品国产乱码一区二区| 欧美成人精品h版在线观看| 两个人免费视频观看日本| 欧美日韩国产大片| 三级在线看中文字幕完整版| 日本成人黄色网址| jizz性欧美23| www.中文字幕av| 成年女人在线视频| 99久热这里只有精品视频免费观看| 亚洲图片欧洲图片日韩av| 91超碰在线播放| 美女视频在线免费| 亚洲天堂激情| 五月天国产视频| 久久夜色精品国产亚洲aⅴ| 亚洲av片在线观看| 日韩亚洲国产中文字幕欧美| 亚洲男人天堂色| 国产成人久久精品| av电影在线观看| √天堂资源在线| 久久久久亚洲精品一区二区三区| 成人h版在线观看| yw3121.龙物视频永不失联| 欧美乱妇15p| 男男视频亚洲欧美| 国产无套粉嫩白浆内谢的出处| 乱人伦精品视频在线观看| 91精品国产91久久久久久最新毛片| 成人网av.com/| 欧美年轻男男videosbes| 欧美日韩高清免费| 日本xxxxwww| 午夜精品一区二区三区在线| 偷拍精品精品一区二区三区| 久久高清免费| 一区二区不卡免费视频| 亚洲第一精品夜夜躁人人爽| 97在线观看免费高| 91精品国产自产在线丝袜啪| 欧美人成免费网站| 第一社区sis001原创亚洲| 国产在线精彩视频| 亚洲欧美色综合| 欧美韩国一区二区| 99热只有这里有精品| 一级黄色免费在线观看| 一区二区日韩电影| 亚洲一区二区| 久久成人精品无人区| 午夜国产不卡在线观看视频| 亚洲国产精品传媒在线观看| 国产美女精品视频免费观看| 看黄在线观看| 咪咪网在线视频| 亚洲国产精品久久久久久6q| 日本少妇xxxxx| 99精品99久久久久久宅男| 久久久久久久九九九九| 欧美日韩一区二区三区在线免费观看| 精品国产av鲁一鲁一区| 麻豆一区二区麻豆免费观看| 日韩欧美在线中文字幕|