≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > PHP笔记

PHP关于Zend的MVC机制使用分析(二)

人气:294 时间:2020-12-03

这篇文章主要为大家详细介绍了PHP关于Zend的MVC机制使用分析(二),具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小玲来看看吧!

接着上面的一篇


把代码贴上来

代码如下:


$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

本文来自:http://www.q1010.com/173/15780-0.html

注:关于PHP关于Zend的MVC机制使用分析(二)的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:

您可能感兴趣的文章

上一篇:Zend的MVC机制使用分析(一)
下一篇:PHP静态调用非静态方法的简单示例
热门文章
  • PHP 写入WRITE编码为UTF8的文件示例
  • PHP 中文字符串截取函数示例:支持gb2312,gbk,big
  • PHP 简单留言板的制作示例
  • 解决Fatal error: Call to undefined function mb_convert_encoding() in错误问题
  • PHP语言基础(标记、注释、变量、数组、常量、函数)示例
  • php 生成迅雷链接的简单示例
  • php 获取短网址的实现方法
  • PHP 通用分页类的简单示例
  • PHP 使用文件方式导入导出整个MYSQL数据库的实现方法
  • php 获取MYSQL错误的简单示例
  • 最新文章
    • 解决PHP使用redis实现统计缓存MySQL压力的问题
    • php 简单的上传进度条的简单示例
    • php 给html中引用的js和css路径打上版本号的实现方法
    • php 实现计算年龄精准到年月日的实例
    • php+ajax无刷新分页的简单示例
    • 解决php+ajax无刷新上传图片的问题
    • 解决PHP生成HTML静态页面的问题
    • 解决PHP使用uniqid函数生成唯一ID的问题
    • 解决PHP防刷票的一些问题
    • 微信access_token的获取开发的实现方法

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。