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与MySQL开发的8个技巧小结
Dec 17 PHP
php 文本文件的读取效率
Feb 10 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
May 08 PHP
PHP开发框架kohana中处理ajax请求的例子
Jul 14 PHP
PHP中预定义的6种接口介绍
May 12 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
Feb 07 PHP
PHP下载远程图片的几种方法总结
Apr 07 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
php 可变函数使用小结
Jun 12 PHP
PHP getName()函数讲解
Feb 03 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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的PDF文档生成技术
2006/10/09 PHP
PHP 和 MySQL 基础教程(一)
2006/10/09 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
php实例分享之mysql数据备份
2014/05/19 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
php简单获取目录列表的方法
2015/03/24 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
2009/12/14 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
微信小程序实现写入读取缓存详解
2019/08/30 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
用python制作游戏外挂
2018/01/04 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
使用pandas读取文件的实现
2019/07/31 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
优秀英语专业毕业生求职信
2013/11/23 职场文书
八一慰问活动方案
2014/02/07 职场文书
高中军训感言1000字
2014/03/01 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
社区春季防火方案
2014/06/02 职场文书
董事长秘书工作职责
2014/06/10 职场文书
物流专业求职信
2014/06/30 职场文书
生物工程专业求职信
2014/09/03 职场文书
博士生专家推荐信
2014/09/26 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL