位置: 编程技术 - 正文

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)

  • 住宿业的小规模纳税标准
  • 本年利润和利润分配未分配利润的区别
  • 有限公司能变更为个体工商户
  • 汇票没到期可以撤回吗
  • 现金流量表存货增加是负的
  • 制造费用结转到辅助生产成本
  • 公司交社保是怎么计算的
  • 增值税简易计税账务处理
  • 销售折扣怎么开
  • 公司未开展业务就没有债权债务吗
  • 新公司做财务
  • 自建房屋房产税纳税义务发生时间
  • 小型微利企业减按25%计算应纳税所得额
  • 政府专项补助购置固定资产进项税可以抵扣吗?
  • 公司购买固定资产需要交印花税吗
  • 清洁费免税吗
  • 营改增文件2019
  • 混业经营如何缴税?
  • 小规模税务季报都填写哪些表格呢
  • 500元以下不需要发票
  • 注册会计师考点分析
  • 公司奖励金怎么做记账凭证?
  • 固定资产用于免税项目 进项税处理
  • 报关单上的运费怎么看
  • 法院判决书能作为证据使用吗
  • 财政返还额度会计分录
  • 短期投资损失
  • 免税企业进项怎么处理
  • window10的点在哪里
  • 小企业会计准则和一般企业会计准则的区别
  • 企业出售自用汽车
  • 设备安装需要预缴吗
  • linux操作系统为用户提供的接口为
  • 公司承担的社保公积金怎么做账
  • 什么是增值税进项税额和销项税额
  • 小企业会计准则适用于哪些企业
  • 城市维护建设税减免税优惠政策
  • 小规模纳税人记账需要哪些账本
  • 微信小程序商城源码php
  • ps渐变透明效果怎么弄
  • 缴纳增值税会计科目
  • 一个小柜的货代费用
  • 水电费是收据能入账不
  • 研发费用凭证是发票吗
  • phpcms官网打不开
  • mongodb的坑
  • 什么样的公司可以申请破产
  • 原材料的会计处理有哪些
  • 研发支出的账务怎么处理
  • 清空表sql语句
  • 投资性房地产转固定资产账务处理
  • 成本法核算的投资收益缴纳企业所得税
  • 小规模纳税人免税政策2023年
  • 转账支票转账需要带什么
  • 当月作废的专票还是要交增值税吗
  • 什么经营范围可以开推广服务费
  • 服装销售怎么做
  • 中小型企业产品定位方案
  • 复利终值与现值的关系
  • 帐簿凭证的管理方法
  • mysql 死锁解决
  • win8 更改电脑设置
  • Win7打印机驱动备份
  • window8更新10
  • linux使用iso镜像
  • win8系统桌面图标
  • win8怎么卸载应用程序
  • linux ssh默认端口
  • win10系统如何设置锁屏壁纸图片
  • javascript数组的方法
  • 全网最全的小说阅读器
  • 批处理系统的应用场景
  • opengl使用教程
  • 图片批量压缩到200k以下
  • shell去掉\r
  • 简单介绍linux系统有哪些主要特点?
  • nodejs微信公众号开发
  • jquery动态添加div
  • 张家港港区国税局地址
  • 2020十大经济年度人物揭晓
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设