Zend Framework路由器用法实例详解


Posted in PHP onDecember 11, 2016

本文实例讲述了Zend Framework路由器用法。分享给大家供大家参考,具体如下:

路由是一个过程,在这个过程中它去除URI的端点(跟着基本URL的URI部分),并将其分解成参数来决定哪个模块、哪个控制器和哪个动作应该接受请求。

模块、控制器、动作、及其参数被打包到Zend_Controller_Request_Http对象。

使用路由器

为了正确使用路由器,必须对其进行初始化操作。

创建路由器可以通过前端控制器实例的getRouter()方法来实现。该方法不需要任何参数,执行该方法可以返回一个Zend_Controller_Router_Rewrite对象。

创建路由器之后,需要添加一些用户定义的路由,该操作可以通过Zend_Controller_Router_Rewrite对象的addRoute()方法来实现。

代码:

<?php
/**
演示创建路由器的过程
*/
require_once 'Zend/Controller/Front.php';    //引用Zend_Controller_Front.php
$ctrl = Zend_Controller_Front::getInstance();  //创建一个前端控制器
$router = $ctrl->getRouter();          //返回一个默认路由,前端控制器功能很强大啊
$router->addRoute('user',new Zend_Controller_Router_Route('user/:username',array('controller'=>'user','action'=>'info')));

4种基本路由

1.缺省路由

定义:缺省路由是存储在RewriteRouter中名为‘default'的简单Zend_Controller_Router_Route_Module对象。

2.标准框架路由

定义:Zend_Controller_Router_Route是标准的框架路由。

例子:

<?php
//定义标准框架路由
$route = new Zend_Controller_Router_Route('author/:username',
array(
  'controller'=>'profile',
  'action'=>'userinfo'
));
//向路由器中添加定义的路由
$router->addRoute('user',$route);

注:我表示我很晕,日志不好码啊,自己都不太懂。

3.静态路由

定义:特定的路由被设定成型Zend_Controller_Router_Route_Static。

例子:

<?php
//定义静态路由
$route = new Zend_Controller_Router_Route_Static(
'login',
array(
  'controller'=>'auth',
  'action'=>'login'
));
//向路由器中添加定义的路由
$router->addRoute('login',$route);

上述路由将匹配http://domain.com/login的URL,并将其分派到AuthController::loginAction()方法中。

4.正则表达式路由

Zend_Controller_Router_Route_Regex

案例:

<?php
//正则表达式路由
$route = new Zend_Controller_Router_Route_Regex(
  'archive/(\d+)',
  array(
    'controller'=>'archive',
    'action'=>'show'
  ));
//向路由器中添加定义的路由
$router->addRoute('archive',$route);

分析:

正则表达式路由定义的第一个参数中的动态部分(“/”后的内容)不再是一个变量,而是一个正则子模式。

在该例中,成功匹配http://domain.com/archive/2008之后,会返回如下结果值的数组。

$values = array(
1=>'2008',
'controller'=>'archive',
'action'=>'show'
);

后记:

我表示概念太多,很吃力。

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
怎样在UNIX系统下安装php3
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
php检测网页是否被百度收录的函数代码
Oct 09 PHP
有关于PHP中常见数据类型的汇总分享
Jan 06 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
Apr 17 PHP
PHP中大括号'{}'用法实例总结
Feb 08 PHP
php求数组全排列,元素所有组合的方法总结
Mar 14 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 03 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 PHP
PHP连接MySQL数据库三种实现方法
Dec 10 PHP
Zend Framework分发器用法示例
Dec 11 #PHP
PHP与SQL语句常用大全
Dec 10 #PHP
PHP中SQL查询语句的id=%d解释(推荐)
Dec 10 #PHP
PHP获取页面执行时间的方法(推荐)
Dec 10 #PHP
PHP页面跳转实现延时跳转的方法
Dec 10 #PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 #PHP
浅谈php中curl、fsockopen的应用
Dec 10 #PHP
You might like
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php 引用(&amp;)详解
2009/11/20 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
php使用session二维数组实例
2014/11/06 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
静态的动态续篇之来点XML
2006/08/15 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
2017/11/27 Javascript
vue组件详解之使用slot分发内容
2018/04/09 Javascript
Vue前后端不同端口的实现方法
2018/09/19 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
解决nohup重定向python输出到文件不成功的问题
2018/05/11 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
python语音识别实践之百度语音API
2018/08/30 Python
python 图像平移和旋转的实例
2019/01/10 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
adidas泰国官网:adidas TH
2020/07/11 全球购物
外贸英语专业求职信范文
2013/12/25 职场文书
施工安全汇报材料
2014/08/17 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
给校长的建议书范文
2015/09/14 职场文书
保姆聘用合同
2015/09/21 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
《风不能把阳光打败》读后感3篇
2020/01/06 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android