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动态变静态原理
Nov 25 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
使用PHP访问RabbitMQ消息队列的方法示例
Jun 06 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
Aug 27 PHP
php7下的filesize函数
Sep 30 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基本语法总结
2014/09/06 PHP
php购物车实现方法
2015/01/03 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
表单元素与非表单元素刷新区别详细解析
2013/11/06 Javascript
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
Python实现从url中提取域名的几种方法
2014/09/26 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
基于python cut和qcut的用法及区别详解
2019/11/22 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码实例
2020/03/16 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
波兰购物网站:MALL.PL
2019/05/01 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
2019年.net常见面试问题
2012/02/12 面试题
幼儿园英语教学反思
2014/01/30 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
廉洁使者实施方案
2014/03/29 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
2016高考感言
2015/08/01 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书