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 相关文章推荐
PHP为表单获取的URL 地址预设 http 字符串函数代码
May 26 PHP
PHP安全技术之 实现php基本安全
Sep 04 PHP
解析zend studio中直接导入svn中的项目的方法步骤
Jun 21 PHP
关于PHPDocument 代码注释规范的总结
Jun 25 PHP
php顺序查找和二分查找示例
Mar 27 PHP
PHP中Memcache操作类及用法实例
Dec 12 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
php生成PDF格式文件并且加密
Jun 22 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
PHP array_reduce()函数的应用解析
Oct 28 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 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中截取字符串支持utf-8
2007/01/18 PHP
php session应用实例 登录验证
2009/03/16 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
EasyUI 结合JS导出Excel文件的实现方法
2016/11/10 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
2017/09/16 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python中使用asyncio 封装文件读写
2016/09/11 Python
Python 爬虫图片简单实现
2017/06/01 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
python3中函数参数的四种简单用法
2018/07/09 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python通过实例讲解反射机制
2019/10/17 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
财务会计专业个人求职信范本
2014/01/08 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
工程造价专业大学生职业规划范文
2014/03/09 职场文书
解除财产保全担保书
2014/05/20 职场文书
2014年企业员工工作总结
2014/12/09 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
go 实现简易端口扫描的示例
2021/05/22 Golang