CodeIgniter辅助函数helper详解

 更新时间:2014年07月03日 09:23:53   投稿:shichen2014   我要评论
这篇文章主要介绍了CodeIgniter辅助函数helper,需要的朋友可以参考下

1.辅助函数概述

helper辅助函数,顾名思义,就是帮助我们完成各种特定任务的一系列函数。并且每个辅助函数文件是一系列的功能集合汇总在一起。比如可以帮助我们创建链接的URL Helpers,有创建表的Form Helpers,有文本格式化输出的Text Helpers,有设置和读取cookie的Cookie Helpers,还有文件File Helpers等等。

不同于大多数其他系统的是,CodeIgniter的辅助函数没有采用类的方式实现。而是简单的,程序的功能。每个辅助函数处理一个特定的任务,并且不必依靠其他函数。

CodeIgniter默认是没有载入辅助函数文件的,所以如果你想用辅助函数,就必须先载入它。 一旦被载入,辅助函数将全局可用(globally available),你可以在 controller 和 views 中使用它们。

辅助函数文件一般保存在 system/helpers 或 application/helpers 文件夹中。CodeIgniter 将会先在 application/helpers 寻找对应的辅助函数文件, 如果目录不存在或者目录下没有对应的辅助函数文件,CI 才会载入 system/helpers 下的辅助函数文件。

2.载入辅助函数

载入辅助函数是非常简单的,如下所示:

$this->load->helper('name');

其中name是辅助函数文件的名字(不带.php后缀 和"helper" 部分)。

例如,要载入文件名为url_helper.php的URL Helper,可采用下面的语句:

$this->load->helper('url');

辅助函数可以在你的控制器(controller)的任何地方被载入,甚至可以在视图(View)文件中被载入(我们并不建议你这么做)。 请在使用辅助函数之前载入他们。你可以在你的控制器构造函数中载入它们,以便辅助函数能自动在其他函数之前被载入。你也可以在要用到辅助函数的地方当场载入。

注意: 辅助函数载入函数并不返回值,所以不要尝试将它付给一个变量,直接像这样用就可以了。

3.载入多个辅助函数

如果你想一次载入多个辅助函数,你可以这样做:

$this->load->helper( array('helper1', 'helper2', 'helper3') );

4.自动载入辅助函数

如果你想要的话,CodeIgniter可以自动为你载入辅助函数。你可以通过打开 application/config/autoload.php ,并往自动载入数组(autoload array)中增加辅助函数来实现。

5.使用辅助函数

一旦你载入了想要用到辅助函数文件,你就可以用标准的函数调用方法来使用里面的函数。

例如,要使用anchor() 函数来建立一个链接,在视图(View)文件里面你可以这样做:

<?php echo anchor('blog/comments', 'Click Here');?>

这里的"Click Here" 是链接的名字,"blog/comments" 是链接的URI。

注意:辅助函数中的函数名最好做好命名规范,如果同时加载多个辅助函数文件,且其中有名称相同的函数,会导致 CI 出现空白页问题(这也是 PHP 语法错误)。

6.“扩展”辅助函数

你如果想 "扩展"一个原有的 Helpers,可以在你的 application/helpers/ 目录下创建一个新的helper,新的helper的名字是在被“扩展”的Helper的名字开头多加一个 MY_ (这是可以配置的. 见下.).

如果你想做的只是在原有的helper中添加一些新的功能,比如,添加一两个新的方法,或者是修改一个方法;就不值得重写自己的helper。在这种情况下,最好是“扩展”已有的helper。“扩展”一词用在这里不是很恰当,因为Helper的方法是过程式的(procedural) 和离散(discrete)的,在传统的语言环境中无法被“扩展”,不过在CodeIgniter中,你可以添加或修改helper的方法。

例如,扩展一个本地已有的 Array Helper 你应该建立一个文件: application/helpers/MY_array_helper.php, 并添加或重写(override)其中的一些方法:

// any_in_array() is not in the Array Helper, so it defines a new function
function any_in_array($needle, $haystack)
{
  $needle = (is_array($needle)) ? $needle : array($needle);
  foreach ($needle as $item)
  {
    if (in_array($item, $haystack))
    {
      return TRUE;
    }
    }
  return FALSE;
}
// random_element() is included in Array Helper, so it overrides the native function
function random_element($array)
{
  shuffle($array);
  return array_pop($array);
}

7.设定你自己的前缀(Prefix)

用于"扩展" helper 而加上前缀的文件同样也是对库和核心类的扩展.为了设置你自定义的前缀,请打开 application/config/config.php 文件,然后找到如下的条目:

$config['subclass_prefix'] = 'MY_';

这里需要注意:由于所有CodeIgniter自带的库都被冠以 CI_ 这样的前缀命名,所以请不要使用CI_来自定义前缀.

相关文章

  • iOS-Mac远程连接控制Window

    iOS-Mac远程连接控制Window

    这篇文章主要为大家详细介绍了iOS-Mac远程连接控制Window,苹果电脑远程连接控制Windows电脑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • IOS多线程实现多图片下载(二)

    IOS多线程实现多图片下载(二)

    这篇文章主要介绍了IOS多线程实现多图片下载(二)的相关资料,需要的朋友可以参考下
    2016-03-03
  • 仿IOS的越界回弹效果和左右滑动功能

    仿IOS的越界回弹效果和左右滑动功能

    本文主要给大家讲述了制作一个仿IOS的越界回弹效果和左右滑动功能,简易的侧滑菜单控件,对此有兴趣的朋友参考下学习下吧。
    2018-02-02
  • iOS Xcode自定义代码块及迁移的实现方法

    iOS Xcode自定义代码块及迁移的实现方法

    这篇文章主要给大家介绍了关于iOS Xcode自定义代码块及迁移的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用iOS Xcode具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • IOS  手势操作详解及实例总结篇

    IOS 手势操作详解及实例总结篇

    这篇文章主要介绍了IOS 手势操作详解及实例总结篇的相关资料,需要的朋友可以参考下
    2017-01-01
  • iOS实现手机获取验证码倒计时效果

    iOS实现手机获取验证码倒计时效果

    这篇文章主要为大家详细介绍了iOS实现手机获取验证码倒计时效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • iOS实现选项卡效果的方法

    iOS实现选项卡效果的方法

    选项卡在我们日常开发的时候经常要用到,所以这篇文章给大家分享一种iOS实现的简单选项卡效果,很适合大家学习和使用,有需要的可以参考借鉴,下面来一起看看吧。
    2016-09-09
  • iOS开发中Swift逃逸闭包知识

    iOS开发中Swift逃逸闭包知识

    这篇文章主要介绍了iOS开发中Swift逃逸闭包的相关知识点以及需要注意的地方,需要的朋友收藏下吧。
    2018-02-02
  • iOS去除图片背景颜色的方法

    iOS去除图片背景颜色的方法

    本篇文章给大家分享一下iOS去除图片中指定范围内颜色的三种方式,需要的朋友参考学习下吧。
    2017-12-12
  • 检测iOS设备是否越狱的方法

    检测iOS设备是否越狱的方法

    这篇文章主要介绍了检测iOS设备是否越狱的方法,代码基于传统的Objective-C,需要的朋友可以参考下
    2015-10-10

最新评论