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 相关文章推荐
用header 发送cookie的php代码
Mar 16 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
php批量上传的实现代码
Jun 09 PHP
基于PHP Socket配置以及实例的详细介绍
Jun 13 PHP
php curl_init函数用法
Jan 31 PHP
PHP base64编码后解码乱码的解决办法
Jun 19 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
php实现递归的三种基本方式
Jul 04 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 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 ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php数组使用规则分析
2015/02/27 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
Js实现无刷新删除内容
2015/04/29 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
vue.js删除列表中的一行
2018/06/30 Javascript
js代码实现轮播图
2020/05/04 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
跟老齐学Python之编写类之三子类
2014/10/11 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
django允许外部访问的实例讲解
2018/05/14 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
在Python中通过getattr获取对象引用的方法
2019/01/21 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
汽车维修专业毕业生的求职信分享
2013/12/04 职场文书
教师党员承诺书
2014/03/25 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
2015年维修电工工作总结
2015/04/25 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript