- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章__zendframework技术大全MVC控制器(Zend_Controller)
3.8 动作助手 动作助手可以向任何Zend_Controller_Action的衍生动作控制器中,即时加入功能(runtime and/or on-demand functionality),以使得增加公共的动作控制器功能时,尽量减少衍生动作控制器类的必要。 动作助手有多种使用方式,它使用了一套经纪系统(brokerage system),与Zend_View_Helpers(视图助手)中使用的也就是Zend_Controller_Plugin的经纪系统类似。动作助手在需要调用时加载,可以在请求的时候或者动作控制器创建的时候进行实例化。 3.8.1 初始化动作助手 根据需求以及助手的功能,可有几种不同的初始化方式。助手经纪人(broker)存储在Zend_Controller_Action动作控制器的$_helper成员中。可以使用经纪人来获取或者调用助手。以下是几种常见的操作方法。 显式调用getHelper()方法 使用助手经纪人的魔术__get()方法 最后,大部分动作助手实现了direct()方法 3.8.2 助手经纪人 助手经纪人,即Zend_Controller_Action_HelperBroker类。该类处理注册助手对象和助手路径,即时的获取助手等细节。 使用addHelper方法可以注册助手。该方法的语法格式如以下代码所示。 addHelper(Zend_Controller_Action_Helper_Abstract $helper) 以上代码中,参数$helper为一个Zend_Controller_Action_Helper对象实例。执行该方法将向助手经纪人中注册助手。 实例化一个助手并传入经纪人相对来说有点耗费时间和资源。不过使用静态方法addPrefix()和addPath()两个方法能够很容易的自动完成这些工作。 addPrefix($prefix) 以上代码中参数$prefix为一个类的前缀,以字符串表示。执行该方法将用来加入自定义助手类的路径。该方法假定前缀遵循Zend Framework的类命名惯例。 addPath($path, $prefix = Zend_Controller_Action_Helper) 该方法第一个参数为一个目录,以字符串表示;第二个参数为类的前缀(默认为Zend_Controller_Action_Helper),执行该方法将用自己的类前缀映射到指定的目录。 3.8.3 内建的动作助手 Zend Framework中默认包含三个动作助手:FlashMessenger用来处理Flash Messenger会话;Redirector提供另一种实现方式,帮助程序重定向到内部或者外部页面;ViewRenderer自动的完成在控制器内建立视图对象并渲染视图的过程。下面分别对这三种内建动作助手进行介绍。 1.FlashMessenger 2.Redirector 3.ViewRenderer 3.9 响应对象 响应对象逻辑上是请求对象的搭档。目的在于收集消息体和/或消息头,因而可能返回大批的结果。另外前端控制器可能传递任何异常到响应对象,允许开发人员优美的处理异常。可以通过设置Zend_Controller_Front::throwExceptions(true)覆盖这项功能。 3.9.1 使用方法 如果要发送响应输出包括消息头,使用sendResponse()。 $response-sendResponse(); 3.9.2 处理消息头 如本节引文中所描述的,响应对象的一项重要职责是收集和发出HTTP响应消息头。所以该类中存在大量的方法,用于完成引集和发出HTTP响应消息头的操作。该类方法有如下几种。 canSendHeaders()方法 setHeader($name, $value, $replace = false)方法 setRedirect($url, $code = 302)方法 getHeaders()方法 clearHeaders()方法 setRawHeader()方法 getRawHeaders()方法 clearRawHeaders()方法 clearAllHeaders() 3.9.3 命名片段 响应对象支持“命名片段”,该机制允许将消息体分割成不同的片段,并呈一定顺序排列。因此输出的是以特定次序返回的。在其内部,主体内容被存储为一个数组,大量的访问器方法可以用来指示数组内的位置和名称。 处理命名片段的方法有以下几类。 setBody()方法和appendBody()方法 prepend($name, $content)方法 append($name, $content)方法 insert($name, $content, $
文档评论(0)