Jayson Minard的blueprint for php applications中提到了消息入口Bootstrapping的多种实现方式。在zf中1.7中,一个index.php文件的入口已经更近一步的简化。
当然也是支持传统的写法的。而在FrontController中,接受的url的进行dispatche,其路由情况如下:
// Begin dispatch
try {
/**
* Route request to controller/action, if a router is provided
*/
/**
* Notify plugins of router startup
*/
$this->_plugins->routeStartup($this->_request);
$router->route($this->_request);
/**
* Notify plugins of router completion
*/
$this->_plugins->routeShutdown($this->_request);
/**
* Notify plugins of dispatch loop startup
*/
$this->_plugins->dispatchLoopStartup($this->_request);
/**
* Attempt to dispatch the controller/action. If the $this->_request
* indicates that it needs to be dispatched, move to the next
* action in the request.
*/
do {
$this->_request->setDispatched(true);
/**
* Notify plugins of dispatch startup
*/
$this->_plugins->preDispatch($this->_request);
/**
* Skip requested action if preDispatch() has reset it
*/
if (!$this->_request->isDispatched()) {
continue;
}
/**
* Dispatch request
*/
try {
$dispatcher->dispatch($this->_request, $this->_response);
} catch (Exception $e) {
if ($this->throwExceptions()) {
throw $e;
}
$this->_response->setException($e);
}
/**
* Notify plugins of dispatch completion
*/
$this->_plugins->postDispatch($this->_request);
} while (!$this->_request->isDispatched());
重点代码:
$router->route($this->_request);
$router为一个Zend_Controller_Router_Rewrite对象,_request为一个Zend_Controller_Request_Http对象,其封装了一个http请求,其中有一个参数_requestUri,该参数为一个请求的uri,其形式上可能为/index/index?parameter=value。该uri形式上有两段,其中一段为pathInfo,一部分为queryInfo。
在Zend_Controller_Router_Rewrite有代码如下:
// TODO: Should be an interface method. Hack for 1.0 BC
if (!method_exists($route, 'getVersion') || $route->getVersion() == 1) {
$match = $request->getPathInfo();
} else {
$match = $request;
}
if ($params = $route->match($match)) {
$this->_setRequestParams($request, $params);
$this->_currentRoute = $name;
break;
}
其中$match为PathInfo,即/index/index。$router为一个Zend_Controller_Router_Route_Module对象,对象中函数match返回一个数组
["controller"]=>
string(5) "index"
["action"]=>
string(5) "index"
["module"]=>
string(7) "default"。match函数部分代码如下:
$this->_setRequestKeys();
$values = array();
$params = array();
if (!$partial) {
$path = trim($path, self::URI_DELIMITER);
} else {
$matchedPath = $path;
}
if ($path != '') {
$path = explode(self::URI_DELIMITER, $path);
if ($this->_dispatcher && $this->_dispatcher->isValidModule($path[0])) {
$values[$this->_moduleKey] = array_shift($path);
$this->_moduleValid = true;
}
其中:
self::URI_DELIMITER
是一个const,定义如下:
const URI_DELIMITER = '/';
于是返回如上所示数组。Zend_Controller_Router_Rewrite对象中使用了函数_setRequestParams设置module、controlloer和action的名称。
于是在类Zend_Controller_Front中的_request中已经具备了router的信息条件。
未完待续。
分享到:
相关推荐
在PHP的世界里,ZF2(Zend Framework 2)是一个广泛使用的开源框架,它提供了一整套工具和服务,帮助开发者构建...通过深入学习和实践,开发者可以更好地利用ZF2框架提供的强大功能,构建出高效且易于维护的应用程序。
标题中的"zf_74_image_74zf.com_http://74zf:com_74zf.com_zip_"似乎是一个组合字符串,可能包含了某种编码或标识信息。然而,它没有直接提供具体的IT知识点。描述中的"Blessed by a friend."则更像是一句祝福语,与...
其中包括zf框架的配置资料和中文学习手册。对于初学者有一定帮助。
V-BLAST系统的ZF检测ZF检测:线性检测包括ZF(迫零)和MMSE(最小均方误差),检测一般有三步:1、根据准则得到线性加权向量。2、利用线性加权向量得到判决统计量。3、对判决统计量进行判决。
在学习和实践`ZF2`基本案例时,应重点关注如何设置模块、编写控制器、定义路由、创建视图脚本以及处理数据库交互。此外,理解并运用依赖注入和事件驱动,可以提升代码的可维护性和可扩展性。通过逐步分析和研究提供...
标题中的"ZF-ZFSIC-MMSE-MMSESIC_ZF_ZF-SIC_mmse_ZF_SIC_mimo_"可能表示一种MIMO(Multiple-Input Multiple-Output)通信系统的研究,其中涉及了多种信号处理技术,包括零强迫(Zero-Forcing, ZF)、逐符号干扰消除...
3.用处:用于ZF,MMSE,ZF-DFE,MMSE-DFE四种均衡算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,运行里面的Runme_.m文件,不要直接运行子函数文件。运行时注意...
zf model zf 模型,一共两个,第二个.
本资料主要关注MIMO系统中的两种关键检测算法:最小均方误差(Minimum Mean Square Error, MMSE)检测和零 forcing(Zero-Forcing, ZF)检测。这两种方法都是为了在接收端有效地分离多路信号,减少多径传播导致的...
基于ZF预编码性能 画出不同准则下误码率和信噪比的曲线
本文将深入探讨"Ahy_zf.shx"这个特殊字体在CAD环境中的作用及其相关知识点。 首先,".shx"文件是CAD字体的形状文件,全称为Shape Exchange Format。这种文件类型存储了CAD字体的图形定义,用于在图纸中显示特定的...
标题"ZF AS-tronic变速箱故障码表"揭示了本文档的核心内容,主要关注的是ZF公司的AS-tronic系列自动变速器可能出现的故障代码及其含义。ZF AS-tronic是一种先进的自动机械变速箱,常见于各类重型车辆,如吊车等。此...
【ZF-007脱机编程下载器】是一款由智峰工作室精心研发的USB编程工具,专为电子工程师和开发者设计。它具有坚固的金属外壳,小巧轻便且价格实惠,是USB编程下载器市场中的佼佼者,以其稳定性和高性能而备受推崇。 该...
### ZF/MMSE 预编码技术详解 #### 一、多用户MIMO系统概述 多用户MIMO(Multiple Input Multiple Output)系统是现代无线通信技术中的关键组成部分,特别是对于提高无线网络的容量和传输效率至关重要。在多用户...
采埃孚ZF变速箱培训学习教案.pptx
"采埃孚ZF变速箱培训PPT学习教案" 本资源摘要信息中,我们将详细介绍采埃孚ZF变速箱的培训学习教案,涵盖变速箱的特点与功能概述、结构组成、工作原理、控制系统、应用场景等方面的知识点。 一、变速箱特点与功能...
在无线通信领域,多输入多输出(MIMO)技术是一种重要的技术,它可以显著提升无线通信系统的数据传输速率和...对于学习和研究MIMO系统或者对无线通信感兴趣的读者来说,这个压缩包中的内容无疑提供了宝贵的参考资料。
3.用处:用于ZF均衡器和ML均衡器算法编程学习 4.指向人群:本硕博等教研学习使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,运行里面的Runme_.m文件,不要直接运行子函数文件。运行时注意matlab左侧的...
在无线通信领域,预编码(Precoding)是一种用于提高多用户多输入多输出(MIMO)系统性能的技术。...这个"capacity.zip"文件中的代码是一个宝贵的教育资源,可以帮助学习者理解并实践预编码技术和信道容量的计算。
mimo检测算法zf.zf-sic,mmse,mmse-sic性能曲线的matlab仿真,实测可用