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在字符串中查找指定字符串并删除的代码
Oct 02 PHP
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
php自定义hash函数实例
May 05 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
PHP实现无限分类的实现方法
Nov 14 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
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
2013/01/06 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
javascript中创建对象的几种方法总结
2013/11/01 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
Angular2入门教程之模块和组件详解
2017/05/28 Javascript
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
layer弹出层自定义提交取消按钮的例子
2019/09/10 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
js实现简易ATM功能
2020/10/27 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
python3实现钉钉消息推送的方法示例
2019/03/14 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
营销总经理岗位职责
2014/02/02 职场文书
小学国庆节活动方案
2014/02/11 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
MySQL 数据类型详情
2021/11/11 MySQL
Linux7.6二进制安装Mysql8.0.27详细操作步骤
2021/11/27 MySQL