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代码
Jul 17 PHP
php 日期和时间的处理-郑阿奇(续)
Jul 04 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
php中动态变量用法实例
Jun 10 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
Sep 22 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
laravel dingo API返回自定义错误信息的实例
Sep 29 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
PHP sdk文档处理常用代码示例解析
Dec 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
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
ES6关于Promise的用法详解
2018/05/07 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
详解python的数字类型变量与其方法
2016/11/20 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
python去掉 unicode 字符串前面的u方法
2018/10/21 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
Django之路由层的实现
2019/09/09 Python
在python中创建指定大小的多维数组方式
2019/11/28 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
keras得到每层的系数方式
2020/06/15 Python
什么是方法的重载
2013/06/24 面试题
幼儿园消防安全制度
2014/01/26 职场文书
会计岗位职责范本
2014/03/07 职场文书
5s推行计划书
2014/05/06 职场文书
爱国主义演讲稿
2014/05/07 职场文书
高中教师考核方案
2014/05/18 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
新书发布会策划方案
2014/06/09 职场文书
Python 如何安装Selenium
2021/05/06 Python
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android