接着上面的一篇
把代码贴上来
复制代码 代码如下:
$front = Zend_Controller_Front::getInstance();
Zend_Layout::startMvc(array('layoutPath' => USVN_LAYOUTS_DIR));
$front->setRequest(new Zend_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);
$front->dispatch();
上一篇把前两句getInstance和startMvc两个函数已经读完了,下面是继续分析后面的代码
setRequest($request) 这里是判断request是否是继承自Zend_Controller_Request_Abstract,如果是的话就把front的_request赋值为它。
这里需要了解下什么是Zend_Controller_Request_Abstract,它是所有request抽象出来的抽象类。Zend已经提供了两个实现类,Zend_Controller_Request_Http和Zend_Controller_Request_Simple,一般我们搭建服务器都是http请求,所以你的项目如果需要重新继承的话,一般都直接继承Zend_Controller_Request_Http。
Zend_controller_Request_Http中我们经常会使用到的getQuery,getCookie,getRequestUri,getBasePath,getParams,getHeader等这些Http通常的选项都已经有了。
继续讲它的基类Zend_Controller_Request_Abstract,这个类的方法包含:
回到代码
$front->setRequest(new Zend_Controller_Request_Http());这里调用了Zend_Controller_Request_Http的构造函数,构造函数在第一次调用的时候是$this->setRequestUri();其中的setRequestUri很多都是直接使用$_SERVER这个php全局变量中的数据来获取requestUri的。
setRequestUri可以学到的是在不同的服务器中如何获取requestUri(特别是在IIS中的$SERVER中不同的变量组合有不同的含义),比如http://172.23.11.160/usvn/item/usvn_test 这个url,它的requestUri就是/usvn/item/usvn_test
$front->throwExceptions(true); 将内部的_throwExceptions标志位设置为true;
$front->setbaseUrl("/usvn")这个做了两件事情,首先是设置front内部的_baseUrl属性,其次调用Request的setBaseUrl,也是设置Zend_Controller_Request_Http的内部_baseUrl属性。
$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);
下面这三行就直接说,实际上就是使用Zend的Router模块使用配置文件,router使用setRouter放入front里面。
最后一句
$front->dispatch();
这个函数也是最核心的一个函数。
这个函数首先注册了一个插件Zend_Controller_Plugin_ErrorHandler,index为100,把插件的顺序放在最后。
第二步存放了一个Helper,Zend_Controller_Action_Helper_ViewRenderer,index为-80
下面实例化了request,request是一个Zend_Controller_Request_Http类型。并将request的baseUrl设置为前面设置过的_baseUrl,就是"/usvn/item/usvn_test"
接着实例化了response,response是一个Zend_Controller_Response_Http();
下面使用plugins来对Request和Response进行设置,首先实际调用了Zend_Controller_Plugin_Broker的setRequest函数,这个函数循环遍历broker管理的所有插件,调用插件的setRequest($request)函数(如果有的话)。
接下来初始化router,和设置router的参数。router已经在前面设置过了,就是Zend_Controller_Router_Rewrite类型
初始化分发器dispatcher,分发器我们是第一次看到,Zend_Controller_Dispatcher_Standard类。分发器以后再说。
下面的流程:
调用插件的routeStartup对request进行处理
调用router的route处理request
调用插件的routeShutdown对request进行处理
调用插件的dispatchLoopStartup对request进行处理
进入循环分发过程
调用插件的preDispatch对request进行处理
调用dispatcher的dispatch处理request和response
调用插件的postDispatch对request进行处理
跳出循环分发过程
调用插件的dispatchLoopShutdown对request进行处理
发送response

技嘉的主板怎么设置键盘开机首先,要支持键盘开机,一定是PS2键盘!!设置步骤如下:第一步:开机按Del或者F2进入bios,到bios的Advanced(高级)模式普通主板默认进入主板的EZ(简易)模式,需要按F7切换到高级模式,ROG系列主板默认进入bios的高级模式(我们用简体中文来示范)第二步:选择到——【高级】——【高级电源管理(APM)】第三步:找到选项【由PS2键盘唤醒】第四步:这个选项默认是Disabled(关闭)的,下拉之后可以看到三种不同的设置选择,分别是按【空格键】开机、按组

1.处理器在选择电脑配置时,处理器是至关重要的组件之一。对于玩CS这样的游戏来说,处理器的性能直接影响游戏的流畅度和反应速度。推荐选择IntelCorei5或i7系列的处理器,因为它们具有强大的多核处理能力和高频率,可以轻松应对CS的高要求。2.显卡显卡是游戏性能的重要因素之一。对于射击游戏如CS而言,显卡的性能直接影响游戏画面的清晰度和流畅度。建议选择NVIDIAGeForceGTX系列或AMDRadeonRX系列的显卡,它们具备出色的图形处理能力和高帧率输出,能够提供更好的游戏体验3.内存电

广联达软件是一家专注于建筑信息化领域的软件公司,其产品被广泛应用于建筑设计、施工、运营等各个环节。由于广联达软件功能复杂、数据量大,对电脑的配置要求较高。本文将从多个方面详细阐述广联达软件的电脑配置推荐,以帮助读者选择适合的电脑配置处理器广联达软件在进行建筑设计、模拟等操作时,需要进行大量的数据计算和处理,因此对处理器的要求较高。推荐选择多核心、高主频的处理器,如英特尔i7系列或AMDRyzen系列。这些处理器具有较强的计算能力和多线程处理能力,能够更好地满足广联达软件的需求。内存内存是影响计算

主板上SPDIFOUT连接线序最近我遇到了一个问题,就是关于电线的接线顺序。我上网查了一下,有些资料说1、2、4对应的是out、+5V、接地;而另一些资料则说1、2、4对应的是out、接地、+5V。最好的办法是查看你的主板说明书,如果找不到说明书,你可以使用万用表进行测量。首先找到接地,然后就可以确定其他的接线顺序了。主板vdg怎么接线连接主板的VDG接线时,您需要将VGA连接线的一端插入显示器的VGA接口,另一端插入电脑的显卡VGA接口。请注意,不要将其插入主板的VGA接口。完成连接后,您可以

如何在Zend框架中使用ACL(AccessControlList)进行权限控制导言:在一个Web应用程序中,权限控制是至关重要的一项功能。它可以确保用户只能访问其有权访问的页面和功能,并防止未经授权的访问。Zend框架提供了一种方便的方法来实现权限控制,即使用ACL(AccessControlList)组件。本文将介绍如何在Zend框架中使用ACL

我准备去西藏旅行背包去①背多少升的包合适把你认为最好的配置说下本人170体力不错第一次去徒步多就60升或以上的徒步少就60升以下的全程都坐车就不用背包,旅行箱更方便,真要随身带东西,弄个25~40升的就绰绰有馀西藏旅游必备用品:太阳镜、太阳帽、防晒霜、护肤霜、润唇膏、长袖上衣、毛衣;对于特殊旅游或去阿里、藏北、川藏线旅游,建议带:睡袋(防寒)、床单(防脏)、羽绒服、旅游鞋或登山鞋、拖鞋、牙刷、牙膏、毛巾、卷筒纸、纸内裤、消毒湿巾、手电筒、防水火柴、刀具、绳子。前运包能装电脑吗能装电脑,有些背包有

求推荐1155针的cpu哪个最好当前性能最高的1155针CPU是IntelCorei7-3770K。它拥有4个核心和8个线程,基础频率为3.5GHz,并支持TurboBoost2.0技术,最高可达到3.9GHz。此外,它还搭载了8MB的三级缓存,是一款非常出色的处理器LGA1155针最强的CPUIntel酷睿i73770K。LGA1155接口为二三代酷睿处理器所使用的接口类型,性能最好的为Intel酷睿i73770K,这款处理器参数如下:1.适用类型:台式机;2.CPU系列:酷睿i7;3.CPU

PHP实现框架:ZendFramework入门教程ZendFramework是PHP开发的一种开源网站框架,目前由ZendTechnologies维护,ZendFramework采用了MVC设计模式,提供了一系列可重用的代码库,服务于实现Web2.0应用程序和Web服务。ZendFramework深受PHP开发者的欢迎和推崇,拥有广泛


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Dreamweaver CS6
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具