位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享Zend Framework教程之响应对象的封装Zend_Controller_Response实例详解(framework4.0怎么打开),希望有所帮助,仅作参考,欢迎阅读内容。

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

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

概述

响应对象逻辑上是请求对象的搭档.目的在于收集消息体和/或消息头,因而可能返回大批的结果。

Zend_Controller_Response响应对象的基本实现

├── Response│ ├── Abstract.php│ ├── Cli.php│ ├── Exception.php│ ├── Http.php│ └── HttpTestCase.php

Zend_Controller_Response_Abstract

Zend_Controller_Response_Http

常见使用用法

如果要发送响应输出包括消息头,使用sendResponse()。

Note: 默认地,前端控制器完成分发请求后调用sendResponse();一般地,你不需要调用它。但是,如果你想处理响应或者用它来测试你可以使用Zend_Controller_Front::returnResponse(true)设置returnResponse 标志覆盖默认行为:

在动作控制器中使用响应对象。把结果写进响应对象,而不是直接渲染输出和发送消息头:

这样做,可以在显示内容之前,将所有消息头一次发送。

Note: 如果使用动作控制器的 视图集成(view integration),你不需要在相应对象中设置渲染的视图脚本,因为Zend_Controller_Action::render() 默认完成了这些。

如果程序中发生了异常,检查响应对象的isException() 标志,使用getException()获取异常。此外,可以创建定制的响应对象重定向到错误页面,记录异常消息,漂亮的格式化异常消息等。

在前端控制器执行dispatch()后可以获得响应对象,或者请求前端控制器返回响应对象代替渲染输出。

默认地,异常消息是不显示的。可以通过调用renderExceptions()覆盖默认设置。或者启用前端控制器的throwExceptions():

处理消息头

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

如上文所述,响应对象的一项重要职责是收集和发出HTTP响应消息头,相应地存在大量的方法:

canSendHeaders() 用来判别消息头是否已发送,该方法带有一个可选的标志指示消息头已发出时是否抛出异常。可以通过设置headersSentThrowsException 属性为false来覆盖默认设置。setHeader($name, $value, $replace = false)用来设置单独的消息头。默认的不会替换已经存在的同名消息头,但可以设置$replace 为true强制替换.设置消息头前,该方法先检查canSendHeaders()看操作是否允许,并请求抛出异常。setRedirect($url, $code = ) 设置HTTP定位消息头准备重定向,如果提供HTTP状态码,重定向将会使用该状态码。其内部调用setHeader()并使$replace 标志呈打开状态确保只发送一次定位消息头。getHeaders() 返回一个消息头数组,每个元素都是一个带有'name'和'value'键的数组。clearHeaders() 清除所有注册的键值消息头。setRawHeader() 设置没有键值对的原始消息头,比如HTTP状态消息头。getRawHeaders() 返回所有注册的原始消息头。clearRawHeaders()清除所有的原始消息头。clearAllHeaders() 清除所有的消息头,包括原始消息头和键值消息头。

除了上述方法,还有获取和设置当前请求HTTP响应码的访问器, setHttpResponseCode() 和 getHttpResponseCode().

命名片段

相应对象支持“命名片段”。允许你将消息体分割成不同的片段,并呈一定顺序排列。因此输出的是以特定次序返回的。在其内部,主体内容被存储为一个数组,大量的访问器方法可以用来指示数组内位置和名称。

举例来说,你可以使用preDispatch() 钩子来向响应对象中加入页头,然后在动作控制器中加入主体内容,最后在postDispatch()钩子中加入页脚。

上面的例子中,调用/my/foo会使得最终响应对象中的内容呈现下面的结构:

渲染响应时,会按照数组中元素顺序来渲染。

大量的方法可以用来处理命名片段:

setBody() 和 appendBody() 都允许传入一个$name参数,指示一个命名片段。如果提供了这个参数,将会覆盖指定的命名片段,如果该片段不存在就创建一个。如果没有传入$name参数到setBody(),将会重置整个主体内容。如果没有传入$name参数到appendBody(),内容被附加到'default'命名片段。prepend($name, $content) 将创建一个$name命名片段并放置在数组的开始位置。如果该片段存在,将首先移除。append($name, $content) 将创建一个$name命名片段,并放置在数组的结尾位置。 如果该片段存在,将首先移除。insert($name, $content, $parent = null, $before = false) 将创建一个$name命名片段。如果提供$parent参数,新的片段视$before的值决定放置在$parent的前面或者后面。如果该片段存在,将首先移除。clearBody($name = null) 如果$name参数提供,将删除该片段,否则删除全部。getBody($spec = false) 如果$spec参数为一个片段名称,将可以获取到该字段。若$spec参数为false,将返回字符串格式的命名片段顺序链。如果$spec参数为true,返回主体内容数组。

在响应对象中测试异常

如上文所述,默认的,分发过程中的异常发生会在响应对象中注册。异常会注册在一个堆中,允许你抛出所有异常--程序异常,分发异常,插件异常等。如果你要检查或者记录特定的异常,你可能想要使用响应对象的异常API:

setException(Exception $e) 注册一个异常。isException() 判断该异常是否注册。getException() 返回整个异常堆。hasExceptionOfType($type) 判断特定类的异常是否在堆中。hasExceptionOfMessage($message) 判断带有指定消息的异常是否在堆中。hasExceptionOfCode($code) 判断带有指定代码的异常是否在堆中。getExceptionByType($type) 获取堆中特定类的所有异常。如果没有则返回false,否则返回数组。getExceptionByMessage($message) 获取堆中带有特定消息的所有异常。如果没有则返回false,否则返回数组。getExceptionByCode($code) 获取堆中带有特定编码的所有异常。如果没有则返回false,否则返回数组。renderExceptions($flag) 设置标志指示当发送响应时是否发送其中的异常。

自定义响应对象

响应对象的目的首先在于从大量的动作和插件中收集消息头和内容,然后返回到客户端;其次,响应对象也收集发生的任何异常,以处理或者返回这些异常,再或者对终端用户隐藏它们。

响应的基类是Zend_Controller_Response_Abstract,创建的任何子类必须继承这个类或它的衍生类。前面的章节中已经列出了大量可用的方法。

自定义响应对象的原因包括基于请求环境修改返回的内容的输出方式(例如:在CLI和PHP-GTK请求中不发送消息头)增加返回存储在命名片段中内容的最终视图的功能等等。

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

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

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

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

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

标签: framework4.0怎么打开

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

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

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

  • 小规模免税收入账务处理
  • 发票第一联需要保存多久
  • 管理费用中税金分录怎么写
  • 房产税计税依据含税还是不含税
  • 企业间借款利息怎么算
  • 矿泉水资源税计税依据
  • 用于在建工程的贷款利息
  • 部分退货退款剩下的钱什么时候给卖家
  • 在不同单位拿的工资怎么计税?
  • 投资理财产品的优势和劣势
  • 按折现率计算现值
  • 金税盘当月买当月不抵扣怎么处理?
  • 小微企业差旅费可以税前扣除吗
  • 自产产品公益性捐赠可以免征增值税吗
  • 总公司签订合同发票开具给分公司是否可以抵扣
  • 建安企业收取管理费虚开怎么处理
  • win7桌面图标变成了lnk
  • 固定资产净值与原值的区别
  • 公司收到加盟费怎么做会计分录
  • 重装win10系统怎么跳过创建用户名
  • php开发的优点与不足
  • Linux /bin, /sbin, /usr/bin, /usr/sbin 区别
  • win10如何查看显卡配置
  • 职工教育经费怎么记账
  • 担保公司的会计分录
  • 其他应付款年末怎么结转
  • thinkphp5数据库操作
  • 贷款损失准备是什么科目借贷方向
  • node.js最新版本
  • php使用函数限制字符串长度和格式
  • 可视化大屏技术
  • 在报税显示缺少税种信息
  • vue在项目中怎么用的
  • declare -i
  • telnet命令大全
  • 公司对公账户没有流水怎么办
  • 进项抵扣了还要交附加嘛
  • sqlserver存储过程if语句
  • 保税仓库税收政策
  • mysql配置怎么调出来
  • 经营性存款人罚款
  • 没有参加会计继续教育会怎样
  • 年末所得税结转怎么结转
  • 企业哪些情况下需要交税
  • 企业存货核算范围
  • 发行股票时支付的手续费
  • 增值税附加税的计算基数
  • 小规模纳税人有个人所得税吗?
  • 增值税专用发票几个点
  • 什么叫做固定资本
  • 库存商品过期了还能用吗
  • 研发费用加计扣除的条件
  • 自建生产线的入账价值
  • 补发工资如何计税计算
  • 财务收入支出明细表
  • 帮别人维修东西怎么开票
  • 购买办公室家具
  • 原始凭证分类的依据有什么
  • 企业支付宝提现到对公账户要交税吗
  • 工程预缴税款的预征税额如何计算
  • 支付银行手续费等直接收费金融服务
  • 惠普tpn-c126笔记本
  • foxmail反应慢的原因
  • 电脑出windows
  • linux安装atop
  • ubuntu下的vivado2022怎么打开
  • mac win10 wifi
  • windows远程桌面怎么开启
  • win7不同用户下装不同软件
  • linux 文件查看
  • 电脑window8系统怎么样
  • windows2008无法识别usb
  • win10系统出现蓝屏
  • opengl绘制简单矩形代码
  • 黑客需要学哪些
  • python输入错了怎么办
  • js的点击事件怎么做
  • python mem
  • 广西税务怎么交城乡养老保险
  • 浙江省工伤停工留薪期分类目录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设