Zend Framework自定义Helper类相关注意事项总结


Posted in PHP onMarch 14, 2016

本文讲述了Zend Framework自定义Helper类相关注意事项。分享给大家供大家参考,具体如下:

编写自定义的Helper类

编写自定义的Helper类很容易,只要遵循以下几个原则即可:

① 类名必须是 Zend_View_Helper_*,*是helper的名称。例如,你在写一个名为“specialPurpose”的类,类名将至少是"SpecialPurpose",另外你还应该给类名加上前缀,建议将“View_Helper”作为前缀的一部份:“My_View_Helper_SpecialPurpose”。(注意大小写)你将需要将前缀(不包含下划线)传递给addHelperPath() 或 setHelperPath()。
② 类中必须有一个public的方法,该方法名与helper类名相同。这个方法将在你的模板调用"$this->specialPurpose()"时执行。在我们的“specialPurpose”例子中,相应的方法声明可以是 “public function specialPurpose()”。
③ 一般来说,Helper类不应该echo或print或有其它形式的输出。它只需要返回值就可以了。返回的数据应当被转义。
④ 类文件的命名应该是helper方法的名称,比如在"specialPurpose"例子中,文件要存为“SpecialPurpose.php”。

把helper类的文件放在你的helper路径下, Zend_View就会自动加载,实例化,持久化,并执行。

三点类文件名称,类名称,类中helper方法,保持某种程度上的一致。

贴代码:

两个helper,看清楚了,他们的不同啊。。。。。

version   zf 1.10

Bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
  protected function _initDoctype() {
    $this->bootstrap ( 'view' );
    $view = $this->getResource ( 'view' );
    $view->doctype ( 'XHTML1_STRICT' );
  }
  protected function _initView() {
    $view = new Zend_View ();
    $view->setEncoding ( 'UTF-8' );
    $view->doctype ( 'XHTML1_STRICT' );
    $view->addHelperPath('../application/views/helpers', 'My_View_Helper');
    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
    $viewRenderer->setView($view);
    return $view;
  }
}

application/views/helpers

Img.php:

class Zend_View_Helper_Img extends Zend_View_Helper_Abstract
{
  public function img()
  {
    return "this is a img";
  }
}

TestHelper.php:

class My_View_Helper_TestHelper extends Zend_View_Helper_Abstract
{
  public function testHelper()
  {
    return "this is a TestHelper";
  }
}

action中使用:

<?php echo $this->doctype() ?>
<?php echo $this->img() ?>
<?php echo $this->testHelper() ?>

附加内容,在initView中添加addHelperPath,可以改成采用加载application。ini文件配置项的方式把路径进行配置。如下

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
 protected function _initDoctype() {
 $this->bootstrap ( 'view' );
 $view = $this->getResource ( 'view' );
 $view->doctype ( 'XHTML1_STRICT' );
 }
 protected function _initView() {
 $view = new Zend_View ();
 $view->setEncoding ( 'UTF-8' );
 $view->doctype ( 'XHTML1_STRICT' );
 $options = $this->getOptions ();
 $viewOptions = $options ['resources']['view']['helperPath'];
 if (is_array ($viewOptions)) {
  foreach($viewOptions as $helperName =>$path)
  {
  $view->addHelperPath ( $path, $helperName );
  }
 }
 $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer ();
 Zend_Controller_Action_HelperBroker::addHelper ( $viewRenderer );
 $viewRenderer->setView ( $view );
 return $view;
 }
}
[production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.view[] =
resources.view.helperPath.My_View_Helper = "../application/views/helpers"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 1
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1

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

PHP 相关文章推荐
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
php的curl封装类用法实例
Nov 07 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
PHP实现服务器状态监控的方法
Dec 09 PHP
php中http与https跨域共享session的解决方法
Dec 20 PHP
php使用递归计算文件夹大小
Dec 24 PHP
PHP JSON格式的中文显示问题解决方法
Apr 09 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
PHP常量define和const的区别详解
May 18 PHP
PHP之多条件混合筛选功能的实现方法
Oct 09 PHP
Zend Framework教程之Bootstrap类用法概述
Mar 14 #PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
Mar 14 #PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 #PHP
PHP访问数据库集群的方法小结
Mar 14 #PHP
php 无限级分类 获取顶级分类ID
Mar 13 #PHP
PHP实现文件上传与下载实例与总结
Mar 13 #PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
Mar 11 #PHP
You might like
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
PHP中的正则表达式实例详解
2017/04/25 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
理解Javascript_07_理解instanceof实现原理
2010/10/15 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
基于Vue 撸一个指令实现拖拽功能
2019/10/09 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
python实现音乐下载的统计
2018/06/20 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
Python项目打包成二进制的方法
2020/12/30 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
泰国第一在线超市:Tops
2021/02/13 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
历史学专业推荐信
2013/11/06 职场文书
历史专业学生的自我评价
2014/02/28 职场文书
网络管理专业求职信
2014/03/15 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
导游词之西递宏村
2019/12/10 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
Spring Boot项目传参校验的最佳实践指南
2022/04/05 Java/Android
python基础之//、/与%的区别详解
2022/06/10 Python
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js