位置: 编程技术 - 正文

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)

  • 空壳公司如何报税
  • 23年一般纳税人税收政策是什么
  • 加工费怎么做账
  • 劳动收入与报酬的具体形式有哪些
  • 应收账款占用资金的应计利息公式
  • 同一投资主体内部所属企业之间土地,房屋权属的划转
  • 融资租赁方式租出的固定资产
  • 有哪些发票可以开成餐饮服务
  • 两个单位同一个法人
  • 投资款打到个人账户算诈骗吗
  • 哪些费用应该计税
  • 地税局开票需要什么资料
  • 预缴企业所得税是含税数还是不含税
  • 购货发票未到
  • 城建税税收减免政策
  • 减免税款余额方法有哪些
  • 递延收益相关的法律规定
  • 污水处理费计入哪里
  • 咨询费如何入账
  • 固定资产改良被替换怎么处理
  • 收到购买商品发票怎么做账
  • 农村合作社补贴政策
  • linux CentOS/redhat 6.5 LVM分区使用详解
  • xp系统怎么取消用户登录
  • 工程结算如何进行
  • 网吧登录qq安全吗
  • 预存500抵扣1000是几折活动?
  • php中url什么意思
  • 公司试乘试驾车管理
  • 钉钉h5微应用
  • 土地增值税扣除项目金额怎么算
  • yii2权威指南
  • 静态显示方式
  • 关于古老的jsp页面的知识汇总(超详细)
  • redissessiondao
  • 应收账款与企业价值的关系
  • 仓库发货打包以及建议年终总结
  • 新建会计帐套怎么建
  • js函数声明的提出者
  • wordpress防盗链
  • 印花税漏交了有什么影响
  • 企业向个人借款协议范本
  • 增值税纳税申报实训报告
  • 代开发票含税价怎么核算为不含税发票?
  • 转让专利权收入属于什么收入
  • 一个公户从农业银行开户
  • 票据背书转让挂什么科目
  • 个人购买股权和公司购买股权比较
  • 跨年退货怎么处理账务
  • 设备基础属于什么基础
  • 多少金额以上算固定资产
  • xp系统删除文件怎么删
  • linux常用小技巧
  • 操作系统运行慢怎么解决
  • spvic.exe - spvic是什么进程 有什么作用
  • win7定时关机没反应
  • windows10周年纪念版
  • xp清理系统的命令
  • adobe windows7
  • 查看win8.1版本
  • centos6.8分区方案
  • windows7怎么卸载
  • Win7系统安装教程
  • nodejs实现文件压缩下载
  • linux系统中可用于添加用户账号
  • 批处理 /b
  • JS 中document.write()的用法和清空的原因浅析
  • 详细谈谈哲学的基本问题
  • 批处理 判断文件是否存在
  • node+mongodb
  • 怎样使用jquery
  • 批处理系统的进程调度算法
  • js canvas绘制图片
  • js层级选择器
  • unity3d有什么用
  • python的urllib
  • 简述javascript
  • javascript入门基础
  • 如何查询哈尔滨医院药品信息
  • 江苏国税电子税务局怎么登录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设