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 相关文章推荐
实用函数4
Nov 08 PHP
php 小乘法表实现代码
Jul 16 PHP
学习php笔记 字符串处理
Oct 19 PHP
drupal 代码实现URL重写
May 04 PHP
php数组中删除元素的实现代码
Jun 22 PHP
C/S和B/S两种架构区别与优缺点分析
Oct 23 PHP
PHP实现简单汉字验证码
Jul 28 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
php微信开发之关键词回复功能
Jun 13 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 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
咖啡常见的种类
2021/03/03 新手入门
php 应用程序安全防范技术研究
2009/09/25 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
解读ES6中class关键字
2017/11/20 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
python解析文件示例
2014/01/23 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
python分析作业提交情况
2017/11/22 Python
Python中的类与类型示例详解
2019/07/10 Python
中专生学习生活的自我评价分享
2013/10/27 职场文书
计算机相关的自我评价
2014/01/15 职场文书
公司委托书格式范文
2014/04/04 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
紧急通知
2015/04/17 职场文书
离婚案件原告代理词
2015/05/23 职场文书
中学教师读书笔记
2015/07/01 职场文书
python中redis包操作数据库的教程
2022/04/19 Python