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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
建站常用13种PHP开源CMS比较
Aug 23 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
自制PHP框架之模型与数据库
May 07 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
实现php删除链表中重复的结点
Sep 27 PHP
php的instanceof和判断闭包Closure操作示例
Jan 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中进行身份认证
2006/10/09 PHP
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php定界符
2014/06/19 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
vue之延时刷新实例
2019/11/14 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
python教程之用py2exe将PY文件转成EXE文件
2014/06/12 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
Python基于codecs模块实现文件读写案例解析
2020/05/11 Python
Opencv求取连通区域重心实例
2020/06/04 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
python 批量将中文名转换为拼音
2021/02/07 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
你常见到的runtime exception
2016/09/05 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
班级道德讲堂实施方案
2014/02/24 职场文书
公司领导班子四风对照检查材料
2014/09/27 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
怎样写离婚协议书
2015/01/26 职场文书
SQL SERVER中的流程控制语句
2022/05/25 SQL Server