位置: 编程技术 - 正文

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)

  • 金税盘版开票软件怎么升级
  • 亏损企业如何填报企业所得税
  • 增值税申报表上的销售收入
  • 年度企业所得税会计分录怎么做
  • 外出经营是什么意思
  • 住宿费可以抵扣进项吗
  • 公司现金账户归谁管
  • 公司申请破产后股东需要还债吗
  • 公司网站建设费做账是流量应计入
  • 固定资产盘点账务处理
  • 最近的火车票代售点
  • 销售商品开具商品单据
  • 收到一张建筑服务*施工费发票
  • 应收账款对应的科目有哪些
  • 一张合同分三次收款怎么开票?
  • 企业接受固定资产投资
  • 企业净资产指的是什么?
  • 资产负债表本期盈余是负数怎么办
  • 购进商品用于样品赠送的账务处理
  • 不可抵扣的进项税额如何做账
  • 普票红冲对方已入账发票拿不回来
  • 总公司签订合同发票开具给分公司是否可以抵扣
  • 应付工资和实付工资的差额叫什么
  • 奖金扣税标准税率表
  • 小规模减免的税额怎么做账
  • 正常运行英文
  • 每月分配利润如何做账
  • axios异步请求数据
  • 财政补贴的内容分类
  • 长期借款业务会亏损吗
  • 权益法下股权投资转让
  • 研发部门的房租物业费进什么科目
  • 增值税电子发票怎么领用
  • 单位没有残疾人申报怎么申报
  • 上一年度的费用退回清算表怎么填
  • 一个例子解释唯物辩证法三大规律
  • wordpress自动更新
  • 个人股东借款给公司涉及个税么
  • mongodb基础
  • 合伙企业要不要每月做账?报税是不是与一般的有限公司一样,每月申报纳税吗?
  • 律师跨省办案
  • 寄售商店代销寄售物品的税率
  • 低值易耗品费用记在什么费用
  • 当月费用次月报销
  • 税控维护费跨年怎么算
  • 外国专家经费管理办法
  • 委托加工如何做会计处理
  • 新开办的企业怎么做账
  • 以前年度销售退回买方账务处理
  • 什么是委托加工原材料
  • 购入固定资产预计净残值
  • 盘亏和报废报损的区别
  • 低值易耗品和物资的关系
  • 固定资产需要具备的条件
  • 修缮服务指什么
  • 作废发票丢了罚款多少
  • 企业的投资公司 私募
  • 商品盘点库存的方法
  • sql server无法连接服务器的原因
  • win10系统无法安装打印机句柄无效
  • 苹果电脑邮箱添加163邮箱
  • bios设置u盘启动顺序
  • ubuntu命令行添加用户
  • cpqinet.exe是什么进程 安全吗 cpqinet进程安全性评估
  • win7系统怎么开wifi热点
  • Aero glass for win8.1开启aero透明磨砂效果图文教程
  • 工商网银安装
  • opengl光照算法
  • python3网络爬虫
  • auto.js粘贴代码
  • JavaScript html5 canvas绘制时钟效果
  • 通过jquery实现页面的动画效果(实例代码)
  • java learning
  • python的对象
  • android下载图片并保存到本地
  • 东莞市电子税务局app
  • 登录""增值税发票选择确认平台""时提示""打开设备
  • 国家税务局查验发票显示网络异常
  • 航空煤油消费税征收环节
  • 查询发票号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设