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 相关文章推荐
使用eAccelerator加密PHP程序
Oct 03 PHP
PHP 时间日期操作实战
Aug 26 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 PHP
Web程序工作原理详解
Dec 25 PHP
php检测url是否存在的方法
Apr 14 PHP
php检测图片主要颜色的方法
Jul 01 PHP
thinkPHP实现签到功能的方法
Mar 15 PHP
php实现socket推送技术的示例
Dec 20 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
php将xml转化对象的实例详解
Nov 17 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编程最快明白》第三讲:php数组
2010/11/01 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
php实现递归的三种基本方式
2020/07/04 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
js 页面输出值
2008/11/30 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
JavaScript中split() 使用方法汇总
2015/04/17 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
Python实现八大排序算法
2016/08/13 Python
python实现简单遗传算法
2018/03/19 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
python+opencv实现阈值分割
2018/12/26 Python
numpy数组广播的机制
2019/07/12 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
python 日志 logging模块详细解析
2020/03/31 Python
python算的上脚本语言吗
2020/06/22 Python
听课评语大全
2014/04/30 职场文书
记账会计岗位职责
2014/06/16 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
农村党员对照检查材料
2014/09/24 职场文书
Python入门之使用pandas分析excel数据
2021/05/12 Python
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP