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中for循环语句的几种变型
Mar 16 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
Aug 01 PHP
PHP file_get_contents设置超时处理方法
Sep 30 PHP
PHP动态柱状图实现方法
Mar 30 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
浅谈PHP eval()函数定义和用法
Jun 21 PHP
PHP基于单例模式编写PDO类的方法
Sep 13 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
浅析PHP echo 和 print 语句
Jun 30 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
用PHP编写和读取XML的几种方式
2013/01/12 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
jQuery居中元素scrollleft计算方法示例
2017/01/16 Javascript
js实现延迟加载的几种方法
2017/04/24 Javascript
jQuery实现判断上传图片类型和大小的方法示例
2018/04/11 jQuery
代码分析vue中如何配置less
2018/09/28 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
对python中Json与object转化的方法详解
2018/12/31 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
Python迷宫生成和迷宫破解算法实例
2019/12/24 Python
python实现批处理文件
2020/07/28 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
大学生农村教师实习自我鉴定
2013/09/21 职场文书
数据员岗位职责
2013/11/19 职场文书
致铅球运动员广播稿精选
2014/01/12 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
医疗纠纷协议书
2014/04/16 职场文书
企业2014年度工作总结
2014/12/10 职场文书
争先创优个人总结
2015/03/04 职场文书
2015年公共机构节能宣传周活动总结
2015/03/26 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
使用vue-element-admin框架从后端动态获取菜单功能的实现
2021/04/29 Vue.js
nginx常用配置conf的示例代码详解
2022/03/21 Servers
如何Tomcat中使用ipv6地址
2022/05/06 Servers