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下10件你也许并不了解的事情
Sep 11 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 PHP
YII模块实现绑定二级域名的方法
Jul 09 PHP
写一段简单的PHP建立文件夹代码
Jan 06 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
php+mysql实现简单的增删改查功能
Jul 13 PHP
php通过pecl方式安装扩展的实例讲解
Feb 02 PHP
PHP ADODB实现事务处理功能示例
May 25 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
laravel 错误处理,接口错误返回json代码
Oct 25 PHP
PHP设计模式(八)装饰器模式Decorator实例详解【结构型】
May 02 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
解析dedecms空间迁移步骤详解
2013/05/15 PHP
php实现查询百度google收录情况(示例代码)
2013/08/02 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
Zend Framework教程之Resource Autoloading用法实例
2016/03/08 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
js location.replace与location.reload的区别
2010/09/08 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
Jsonp post 跨域方案
2015/07/06 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
jQuery事件用法详解
2016/10/06 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
react native与webview通信的示例代码
2017/09/25 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
matplotlib.pyplot画图并导出保存的实例
2019/12/07 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
Flesh Beauty官网:露华浓集团旗下彩妆品牌
2021/02/15 全球购物
建筑公司文秘岗位职责
2013/11/29 职场文书
会计专业个人自我鉴定
2014/03/21 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
村干部培训方案
2014/05/02 职场文书
创先争优公开承诺书
2014/08/30 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
python文件名批量重命名脚本实例代码
2021/04/22 Python
MySQL 覆盖索引的优点
2021/05/19 MySQL
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python