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 相关文章推荐
在字符串中把网址改成超级链接
Oct 09 PHP
php框架Phpbean说明
Jan 10 PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
PHP的Yii框架中过滤器相关的使用总结
Mar 29 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP实现的回溯算法示例
Aug 15 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
PHP实现分布式memcache设置web集群session同步的方法
Apr 10 PHP
PHP实现的解汉诺塔问题算法示例
Aug 06 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
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
zend framework重定向方法小结
2016/05/28 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
PHP substr()函数参数解释及用法讲解
2017/11/23 PHP
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
jQuery插件之jQuery.Form.js用法实例分析(附demo示例源码)
2016/01/04 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
实用jquery操作表单元素的简单代码
2016/07/04 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
webpack之devtool详解
2018/02/10 Javascript
webpack4简单入门实例
2018/09/06 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
2019/12/20 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python脚本后台执行方式
2019/12/21 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
10条PHP编程习惯
2014/05/26 面试题
4s客服专员岗位职责
2013/12/01 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
战友聚会邀请函
2014/01/18 职场文书
初三开学计划书
2014/04/27 职场文书
群众路线教育实践活动思想汇报(2014特荐篇)
2014/09/16 职场文书
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
劳资员岗位职责
2015/02/13 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB