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极大的增强功能和性能
Oct 09 PHP
PHP安全配置
Dec 06 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
PHP删除数组中的特定元素的代码
Jun 28 PHP
php下载文件的代码示例
Jun 29 PHP
php中使用addslashes函数报错问题的解决方法
Feb 06 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP折半(二分)查找算法实例分析
May 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中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
javascript 常用关键字列表集合
2007/12/04 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
jQuery Tips 为AJAX回调函数传递额外参数的方法
2010/12/28 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
vue-router的hooks用法详解
2020/06/08 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python标准库os.path包、glob包使用实例
2014/11/25 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
详解TensorFlow查看ckpt中变量的几种方法
2018/06/19 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Python request操作步骤及代码实例
2020/04/13 Python
python如何构建mock接口服务
2021/01/28 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
网络维护中文求职信
2014/01/03 职场文书
《猴子种果树》教学反思
2014/04/26 职场文书
志愿者活动总结报告
2014/06/27 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
公司奖励通知
2015/04/21 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
Go语言实现Snowflake雪花算法
2021/06/08 Golang
解析MySQL索引的作用
2022/03/03 MySQL
为Centos安装指定版本的Docker
2022/04/01 Servers