位置: 编程技术 - 正文

Zend Framework教程之路由功能Zend_Controller_Router详解(zend framework手册)

编辑:rootadmin

推荐整理分享Zend Framework教程之路由功能Zend_Controller_Router详解(zend framework手册),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:zend framework手册,framework3.5怎么打开,zendstudio怎么创建php项目,framework3.5怎么打开,zendframework3,zendframework3,zendframework3,zendframework3,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了Zend Framework教程之路由功能Zend_Controller_Router用法。分享给大家供大家参考,具体如下:

Zend Framework的路由提供了两个主要功能路由和创建路由。

Zend_Controller_Router的Route类和相应Route目录下的类定义常见的路由操作。

接口Zend_Controller_Router_Interface,类Zend_Controller_Router_Abstract和Zend_Controller_Router_Rewrite完成了基本的路由,创建路由,删除路由的功能。

└── Router ├── Abstract.php ├── Exception.php ├── Interface.php ├── Rewrite.php ├── Route │ ├── Abstract.php │ ├── Chain.php │ ├── Hostname.php │ ├── Interface.php │ ├── Module.php │ ├── Regex.php │ └── Static.php └── Route.php

Zend_Controller_Router路由功能的实现

Zend_Controller_Router_Interface

Zend_Controller_Router_Abstract

Zend_Controller_Router_Rewrite

添加路由的操作方法

public function addRoute($name, Zend_Controller_Router_Route_Interface $route)public function addRoutes($routes)

addRoute的第一个参数是路由名。第二个参数是路由自己。路由名最普通的用法是通过Zend_View_Url助手的方法:

它将导致在 href: user/martel.

路由是一个简单的过程,这个过程通过所有提供的路由和匹配它的当前请求的URI定义来迭代。当一个正匹配被发现,变量值从路由实例返回并注入到Zend_Controller_Request对象以备将来在派遣器和用户创建的控制器中使用。如果是负匹配,在链中的下个路由被检查。

Note: 倒序匹配

用倒序来匹配路由确保最通用的路由被首先定义。

Note: 返回的值

从路由返回的值来自于URL参数或用于定义的缺省值。这些变量以后可通过Zend_Controller_Request::getParam() 或 Zend_Controller_Action::_getParam() 方法来访问。

有三个特殊的变量可用于你的路由-'module'、 'controller' 和 'action'。这些特殊的变量被Zend_Controller_Dispatcher用来找出控制器和动作然后派遣过去。

Note: 特殊变量

如果你选择通过 setControllerKey 和 setActionKey方法的方式来改变缺省值,这些特殊变量的名字可能会不同。

缺省路由

Zend_Controller_Router_Rewrite 和缺省路由一起预先配置,它将以controller/action的形式匹配URIs。另外,模块名可以被指定作为第一个路径参数,允许这种module/controller/action形式的URIs。最后,它也将缺省地匹配任何另外的追加到URI的参数-controller/action/var1/value1/var2/value2。

一些路由如何匹配的例子:

缺省路由是存储在RewriteRouter名(index)为'default'的简单的Zend_Controller_Router_Route_Module对象。它被创建多多少少象下面这样:

如果你不想这个特别的缺省路由在你的路由计划中,你可以重写你自己的‘缺省'路由(例如,把它存储在'default'名下)或用removeDefaultRoutes()完全清除它:

Zend Framework教程之路由功能Zend_Controller_Router详解(zend framework手册)

为了增加路由的灵活性,方便自定义新的路由类型,Zend_Controller_Router定义了Zend_Controller_Router_Route_Interface接口和类Zend_Controller_Router_Route_Abstract,实现相应的类方法即可定义路由类型,为开发提供了便利。

Zend_Controller_Router的路由类型

Zend_Controller_Router默认提供了以下路由类型,分别为:

Zend_Controller_Router_RouteZend_Controller_Router_Route_StaticZend_Controller_Router_Route_RegexZend_Controller_Router_Route_HostnameZend_Controller_Router_Route_ModuleZend_Controller_Router_Route_ChainZend_Controller_Router_Route

Zend_Controller_Router_Route是标准的框架路由。它结合了灵活路由定义的易用性。每个路由包含了基本的URL映射(静态的和动态的部分(变量))并且可以被缺省地初始化,也可以根据不同的要求初始化。

让我们想象一下我们假设的应用程序将需要一些广域内容作者的信息页面。我们想能够把浏览器指向 字符的的用法

当前的实现允许你使用任何字符(正斜杠除外)作为变量标识符,但强烈建议只使用PHP使用的变量标识符。将来的实现也许会改变这个行为,它可能会导致在你的代码里有隐藏的bugs。

当你把浏览器指向 regex 选项。在下面例子中,子域为动作控制器被用作用户名参数。 当组装路由时,你可以给出用户名为参数,就像你用其它路径参数一样:

Zend_Controller_Router_Route_Static

设置固定不变的路由:

上面的路由将匹配 AuthController::loginAction().

Zend_Controller_Router_Route_Regex

除了缺省的和静态的路由类型外,正则表达式路由类型也可用。这个路由比其它路由更强更灵活,只是稍微有点复杂。同时,它应该比标准路由快。

象标准路由一样,这个路由必须用路由定义和一些缺省条件来初始化。让我们创建一个archive路由作为例子,和先前定义的类似,这次只是用了Regex:

每个定义的regex子模式将被注入到请求对象里。同上述的例子,再成功匹配 在匹配之前,开头和结尾的斜杠从路由器里的URL中去除掉了。结果,匹配 行开头和行结尾符号(分别为'^' 和 '$')被自动预先追加到所有表达式。这样,你不需要在你的正则表达式里用它们,你应该匹配整个字符串。

Note: 这个路由类使用#符作为分隔符。这意味着你将需要避免哈希符('#')但不是正斜杠('/')在你的路由定义里。因为'#'符(名称为锚)很少被传给webserver,你将几乎不需要在你的regex里使用它。

你可以用通常的办法获得已定义的子模式的内容:

Note: 注意这个键是整数(1) 而不是字符串('1')。

因为'year'的缺省没有设置,这个路由将和它的标准路由副本不是非常精确地相同。即使我们为'year'声明一个缺省并使子模式可选,也不清楚是否会在拖尾斜杠(trailing slash)上还将有问题。方案是使整个'year'部分和斜杠一起可选但只抓取数字部分:(这段比较绕口,请校对者仔细看看,谢谢 Jason Qi)

让我们看看你可能注意到的问题。 给参数使用基于整数的键不是容易管理的办法,今后可能会有问题。这就是为什么有第三个参数。这是个联合数组表示一个regex子模式到参数名键的映射。我们来看看一个简单的例子:

这将导致下面的值被注入到请求:

这个映射被任何目录来定义使它能工作于任何环境。键可以包含变量名或子模式索引:

Note: 子模式键必须用整数表示。

注意在请求值中的数字索引不见了,代替的是一个名字变量。当然如果你愿意可以把数字和名字变量混合使用:

这将导致在请求中有混合的值可用。例如: assemble方法,你需要准备一个颠倒的URL。这个颠倒的路径用可由sprintf()解析的字符串来表示并定义为第四个构造参数:

所有这些都已经可能由标准路由对象完成,那么使用Regex路由的好处在哪里?首先,它允许你不受限制地描述任何类型的URL。想象一下你有一个博客并希望创建象 FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

Zend Framework教程之MVC框架的Controller用法分析 本文讲述了ZendFramework教程之MVC框架的Controller用法。分享给大家供大家参考,具体如下:这里简单讲讲MVC模式中Controller的基本使用方法。基本使用实例

PHP Echo字符串的连接格式 先给大家说下PHPecho()函数定义和用法echo()函数输出一个或多个字符串。注释:echo()函数实际不是一个函数,所以您不必对它使用括号。然而,如果您希

Zend Framework教程之Resource Autoloading用法实例 本文实例讲述了ZendFramework中ResourceAutoloading用法。分享给大家供大家参考,具体如下:通常,在开发应用程序中,可能类文件名不能按照标准ZendFramework

标签: zend framework手册

本文链接地址:https://www.jiuchutong.com/biancheng/289894.html 转载请保留说明!

上一篇:Zend Framework教程之Zend_Controller_Plugin插件用法详解(zendframework3中文手册)

下一篇:Zend Framework教程之MVC框架的Controller用法分析(framework core)

  • 税控盘280怎么变398了
  • 一般纳税人转为小规模的条件
  • 怎么应对降税,不含税价怎么应对
  • 利润表的期末余额
  • 企业所得税中的所得
  • 出口退税中哪些是免税的
  • 公益性捐赠的税收优惠政策
  • 新会计准则中资产减值论文
  • 应收票据贴现的含义
  • 预付房租摊销账务处理
  • 免税农产品如何填报企业所得税季报
  • 购物卡开预付卡有风险吗
  • 营改增后企业缴税种类
  • 建筑施工企业清欠管理办法
  • 企业债务追诉期几年
  • 税务局收到企业发票
  • 一般纳税人十万以下免教育费附加
  • 红字发票是否需要盖发票章
  • 委托加工应税消费品收回后直接销售
  • 没有对公账户怎么办
  • com2us密码找回
  • 独立账户负债核算内容
  • mce文件是什么软件
  • pascl32.exe - pascl32是什么进程 有什么用
  • 图像分割 unet
  • 出差午餐补助公职出差
  • 斑鹿,滕波尔国家公园,印度 (© Ondrej Prosicky/Shutterstock)
  • 分布式简介
  • 工程施工下的间接费用下有什么科目
  • tp6 分页
  • thinkphp框架作用
  • 跨的基本功有哪些
  • 2023前端面试题目100及最佳答案
  • pytorch的环境配置
  • discuz关闭电脑版
  • 公司注销退还股票流程
  • 帝国cms数据库如何使用
  • 人力资源公司的税率是多少
  • sql server如何操作
  • 帝国cms如何使用
  • 固定资产的入账金额怎么算
  • 企业固定资产内部控制审计研究论文
  • 一般劳务报酬个人所得税退税吗
  • 企业信息联网核查系统的意义
  • 什么是现金什么是现金流
  • 资质办理属于什么开票大类
  • 软件退税款会计如何处理
  • 出口关税怎么缴纳
  • 查缴个人海外避税所得税
  • 单位补扣社保算漏交吗
  • 其他应收款个人在贷方表示什么
  • 未入账的记账凭证填错了怎么办
  • 小规模纳税人收入是含税还是不含税
  • 废料卖出算哪种收入
  • 私人贴现利息如何交税
  • be备份linux系统
  • wrme.exe是什么
  • window系统大全
  • os x10.10.4beta6下载地址 os x10.10.4beta6官方下载网址
  • 如何去掉windows7开机密码
  • fsck.mode
  • win7安装cad2010
  • win10一年更新一次
  • linux系统怎么弄
  • bootstrap-treeview.js
  • perl-v
  • 菜鸟学安卓逆向
  • 脚本控制三行三列怎么写
  • 网页制作css怎么用
  • Python列表list
  • ADB (Android Debug Bridge)常用命令
  • css中层叠的含义
  • js实现滑块拖动
  • linux查看端口占用情况并杀掉进程
  • jquery悬浮窗
  • 安卓中textview
  • js实现双击屏幕放大
  • 水电费收税
  • 支付宝登录电子社保卡显示已被其他账号登录
  • 中国民营经济十大新闻人物
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设