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 伪静态隐藏传递参数名的四种方法
Feb 22 PHP
九个你必须知道而且又很好用的php函数和特点
Aug 08 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
php中curl使用指南
Feb 05 PHP
PHP多维数组转一维数组的简单实现方法
Dec 23 PHP
CI框架的安全性分析
May 18 PHP
PHP之十六个魔术方法详细介绍
Nov 01 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
Sep 26 PHP
详解PHP素材图片上传、下载功能
Apr 12 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
ip签名探针
2006/10/09 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
php带抄送和密件抄送的邮件发送方法
2015/03/20 PHP
php常量详细解析
2015/10/27 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
javascript和HTML5利用canvas构建猜牌游戏实现算法
2013/07/17 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
2016/12/20 Javascript
基于jQuery实现滚动刷新效果
2017/01/09 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Django中的ajax请求
2018/10/19 Python
用Python读取几十万行文本数据
2018/12/24 Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
2020/07/14 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
使用HTML5 IndexDB存储图像和文件的示例
2018/11/05 HTML / CSS
婚庆公司的创业计划书
2014/01/22 职场文书
个人现实表现材料
2014/02/04 职场文书
读群众路线心得体会
2014/03/07 职场文书
社区食品安全实施方案
2014/03/28 职场文书
生日庆典策划方案
2014/06/02 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
长征观后感
2015/06/09 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python
Java8中接口的新特性使用指南
2021/11/01 Java/Android
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android