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 MsSql server时遇到的中文编码问题
Jun 11 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php木马webshell扫描器代码
Jan 25 PHP
解析php中array_merge与array+array的区别
Jun 21 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
Nov 29 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
总结PHP内存释放以及垃圾回收
Mar 29 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 PHP
解决laravel session失效的问题
Oct 14 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 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+mysql)
2007/11/23 PHP
php分页示例分享
2014/04/30 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
php实现网页端验证码功能
2017/07/11 PHP
基于jquery的复制网页内容到WORD的实现代码
2011/02/16 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
python在windows下创建隐藏窗口子进程的方法
2015/06/04 Python
Python2中的raw_input() 与 input()
2015/06/12 Python
window下eclipse安装python插件教程
2017/04/24 Python
Python实现打印螺旋矩阵功能的方法
2017/11/21 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Python运算符+与+=的方法实例
2021/02/18 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
命名空间(namespace)和程序集(Assembly)有什么区别
2015/09/25 面试题
社区包粽子活动方案
2014/01/21 职场文书
文明班级建设方案
2014/05/15 职场文书
县级文明单位申报材料
2014/05/23 职场文书
出纳工作检讨书
2014/10/18 职场文书
2015年仓库工作总结
2015/04/09 职场文书
银行培训心得体会范文
2016/01/09 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
python Tkinter的简单入门教程
2021/04/11 Python
Python作用域和名称空间的详细介绍
2022/04/13 Python