位置: 编程技术 - 正文

Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解(framework在哪)

编辑:rootadmin

推荐整理分享Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解(framework在哪),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:framework在哪看,framework在哪,zendframework3中文手册,framework打开,framework在哪,framework在哪,怎么启用framework3.5,framework4.0怎么打开,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了Zend Framework教程之请求对象的封装Zend_Controller_Request方法。分享给大家供大家参考,具体如下:

概述

请求对象是在前端控制器,路由器,分发器,以及控制类间传递的简单值对象。请求对象封装了请求的模块,控制器,动作以及可选的参数,还包括其他的请求环境,如HTTP,CLI,PHP-GTK。

请求对象的基本实现

├── Request│ ├── Abstract.php│ ├── Apache.php│ ├── Exception.php│ ├── Http.php│ ├── HttpTestCase.php│ └── Simple.php

Zend_Controller_Request_Abstract

实现了请求对象的基本方法。

Zend_Controller_Request_Http

Zend_Controller_Request请求对象的默认实现。

从上述类的实现,不难看出,类为我们提供了很多方便的方法来获取需要的数据。例如:

模块名可通过getModuleName()和setModuleName()访问。控制器名可通过getControllerName()和setControllerName()访问。控制器调用的动作名称可通过getActionName()和setActionName()访问。可访问的参数是一个键值对的关联数组。数组可通过getParams()和 setParams()获取及设置,单个参数可以通过 getParam() 和 setParam()获取及设置。

基于请求的类型存在更多的可用方法。默认的Zend_Controller_Request_Http请求对象,拥有访问请求url、路径信息、$_GET 和 $_POST参数的方法等等。

请求对象先被传入到前端控制器。如果没有提供请求对象,它将在分发过程的开始、任何路由过程发生之前实例化。请求对象将被传递到分发链中的每个对象。

而且,请求对象在测试中是很有用的。开发人员可根据需要搭建请求环境,包括模块、控制器、动作、参数、URI等等,并且将其传入前端控制器来测试程序流向。如果与响应对象配合,可以对MVC程序进行精确巧妙的单元测试(unit testing)。

HTTP 请求

访问请求数据

Zend_Controller_Request_Http封装了对相关值的访问,如控制器和动作路由器变量的键名和值,从URL解析的附加参数。它还允许访问作为公共成员的超全局变量,管理当前的基地址(Base URL)和请求URI。超全局变量不能在请求对象中赋值,但可以通过setParam/getParam方法设定/获取用户参数。

Note: 超全局数据

通过Zend_Controller_Request_Http访问公共成员属性的超全局数据,有必要认识到一点,这些属性名(超全局数组的键)按照特定次序匹配超全局变量:1. GET,2.POST,3. COOKIE,4. SERVER,5. ENV。

特定的超全局变量也可以选择特定的方法来访问,如$_POST['user']可以调用请求对象的getPost('user')访问,getQuery()可以获取$_GET元素,getHeader()可以获取请求消息头。

Note: GET和POST数据

需要注意:在请求对象中访问数据是没有经过任何过滤的,路由器和分发器根据任务来验证过滤数据,但在请求对象中没有任何处理。

Note: 也获取原始 (Raw) POST 数据!

从 1.5.0 开始,也可以通过 getRawBody() 方法获取原始 post 数据。如果没有数据以那种方式提交,该方法返回 false,但 post 的全体(full boday)是个例外。

Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解(framework在哪)

当开发一个 RESTful MVC 程序,这个对于接受内容相当有用。

可以在请求对象中使用setParam() 和getParam()来设置和获取用户参数。 路由器根据请求URI中的参数,利用这项功能请求对象设定参数。

Note: getParam()不只可以获取用户参数

getParam()事实上从几个资源中获取参数。根据优先级排序:通过setParam()设置的用户参数,GET 参数,最后是POST参数。 通过该方法获取数据时需要注意这点。

如果你希望从你通过 setParam() 设置的参数中获取(参数),使用 getUserParam()。

另外,从 1.5.0 开始,可以锁定搜索哪个参数源,setParamSources() 允许指定一个空数组或者一个带有一个或多个指示哪个参数源被允许(缺省两者都被允许)的值 '_GET'或'_POST'的数组;如果想限制只访问 '_GET',那么指定 setParamSources(array('_GET')) 。

Note: Apache相关

如果使用apache的处理器来传递请求到前端控制器,或者使用重写规则(rewrite rules)的PT标志,URI包含在$_SERVER['REDIRECT_URL'],而不是$_SERVER['REQUEST_URI']。如果使用这样的设定并获取无效的路由,应该使用Zend_Controller_Request_Apache类代替默认的HTTP类:

这个类继承了Zend_Controller_Request_Http,并简单的修改了请求URI的自动发现(autodiscovery),它可以用来作为简易替换器件(drop-in replacement)。基地址和子目录

Zend_Controller_Request_Http允许在子目录中使用Zend_Controller_Router_Rewrite。Zend_Controller_Request_Http试图自动的检测你的基地址,并进行相应的设置。

例如,如果将 index.php 放在web服务器的名为/projects/myapp/index.php子目录中,基地址应该被设置为/projects/myapp。计算任何路由匹配之前将先从路径中去除这个字符串。这个字串需要被加入到任何路由前面。路由 'user/:username'将匹配类似 和 URL检测区分大小写

基地址的自动检测是区分大小写的,因此需要确保URL与文件系统中的子目录匹配。否则将会引发异常。

如果基地址经检测不正确,可以利用Zend_Controller_Request_Http或者Zend_Controller_Front类的setBaseUrl()方法设置自己的基路径。Zend_Controller_Front设置最容易,它将导入基地址到请求对象。定制基地址的用法举例:

判断请求方式

getMethod() 允许你决定用于请求当前资源的 HTTP 请求方法。另外,当询问是否一个请求的特定类型是否已经存在,有许多方法允许你获得布尔响应:

isGet()isPost()isPut()isDelete()isHead()isOptions()

这些基本用例是来创建 RESTful MVC 架构的。

AJAX 请求

Zend_Controller_Request_Http 有一个初步的方法用来检测AJAX请求:isXmlHttpRequest()。这个方法寻找一个带有'XMLHttpRequest' 值的HTTP请求头X-Requested-With;如果发现,就返回true。

当前,这个头用下列JS库缺省地传递:Prototype/Scriptaculous (and libraries derived from Prototype)Yahoo! UI LibraryjQueryMochiKit

大多数 AJAX 库允许发送定制的HTTP请求头;如果你的库没有发送这个头,简单地把它作为一个请求头添加上确保isXmlHttpRequest() 方法工作。子类化请求对象。

请求对象是请求环境的容器。控制器链实际上只需要知道如何设置和获取控制器、动作,可选的参数以及分发的状态。默认的,请求将使用controller和action键查询自己的参数来确定控制器和动作。

需要一个请求类来与特定的环境交互以获得需要的数据时,可以扩展该基类或它的衍生类。例如HTTP环境,CLI环境,或者PHP-GTK环境。

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解 本文实例讲述了ZendFramework教程之响应对象的封装Zend_Controller_Response用法。分享给大家供大家参考,具体如下:概述响应对象逻辑上是请求对象的搭档.目

Zend Framework教程之Zend_Controller_Plugin插件用法详解 本文实例讲述了ZendFramework教程之Zend_Controller_Plugin插件用法。分享给大家供大家参考,具体如下:通过Zend_Controller_Plugin可以向前端控制器增加附加的功

Zend Framework教程之路由功能Zend_Controller_Router详解 本文实例讲述了ZendFramework教程之路由功能Zend_Controller_Router用法。分享给大家供大家参考,具体如下:ZendFramework的路由提供了两个主要功能路由和创建

标签: framework在哪

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

上一篇:Zend Framework教程之动作的基类Zend_Controller_Action详解(zendframework3中文手册)

下一篇:Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解(framework4.0怎么打开)

  • 一次性购入固定资产投资收益
  • 缴纳增值税影响损益吗
  • 财务报表没申报以后可不可以补申报
  • 征地费用应计入什么会计科目
  • 个税全员全额扣缴申报指什么
  • 自然人系统怎么申报个人所得税
  • 哪些行业增值税率1%
  • 定期定额户个人所得税怎么申报
  • 房租违约金收入怎么做账
  • 应付账款对方不催款怎么办
  • 贷款损失准备金怎么计算
  • 以旧换新会计处理金银首饰
  • 税务局返还的代征代扣要交增值税吗
  • 停车场需要对车辆负责吗
  • 进项结构明细表怎么做
  • 财税[2016]140号文逐条解读
  • 企业年金个税如何计提
  • 以前年度多做了收入怎样调账
  • 营业成本过低的原因
  • 股份支付的会计处理?
  • 福利费进行税额转出
  • 自产自用的产品用于在建工程
  • 预缴增值税附加税款怎么填写申报表
  • Linux系统怎么设置常亮
  • 光纤布线有什么作用
  • php写json
  • Win11怎么打开网络适配器
  • anyproxy提高公众号文章采集效率
  • macbookappstore未知错误
  • 销售不动产分期收款怎么确认收入
  • 共管账户的定义
  • 负债期末余额为负数写在哪方
  • 购进旧设备折旧年限如何计算
  • php加密文件解密
  • Madonna della Corona教堂,意大利 (© Volodymyr Kalyniuk/Alamy)
  • 低值易耗品是怎样的
  • 企业合并发生的审计费用,评估费用会计分录
  • 企业销售折扣在计征所得税时如何处理
  • php防止抓包
  • php函数的定义和调用
  • 公司客户招待费用标准
  • node最新版本
  • 社保台账显示未托收
  • 怎么升级一般纳税人
  • 租赁公司车转到私人名下
  • 预收账款多好还是少好
  • 用于职工福利的固定资产折旧
  • 出资人和法人承担责任
  • 在正确使用和正常维护的条件下
  • 新会计准则规定
  • 印花税的征收方式有哪些
  • 长期待摊费用科目怎么使用
  • 农产品收购发票如何抵扣进项税
  • 实物出资没有发票怎么办
  • 公司办理宽带套餐合法吗
  • 应付账款与应付票据结合的原则
  • 甲方扣水电费施工方是否开票
  • 年底计提利息会计分录
  • sql多级汇总
  • mysql5717安装及配置超详细教程
  • 将IBM ServeRAID 8i卡的驱动整合到Win2003安装光盘里
  • windows server 2008 r2怎么用u盘启动
  • U盘硬装WIN7 64位旗舰系统,是怎样练成的(妹子装机衔接篇)
  • linux系统中touch
  • win8windows设置在哪里
  • win8创建我的电脑
  • ubuntu 2021
  • win7取消关机命令
  • opengl context for format
  • c# opengl绘图
  • shader要学多久
  • async/await与promise(nodejs中的异步操作问题)
  • linux启动过程流程图
  • unity如何动态刷新滚动列表
  • python smtpd
  • 一个android项目一般包含哪些目录?各有什么用途?
  • 税务局高风险是怎么办
  • 小规模纳税人进口环节的增值税税率
  • 增值税有哪些税种组成
  • 公司换届审计一般要多久
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设