CodeIgnite中的辅助函数

辅助函数,在CodeIgnite中称为Helpers,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URL Helpers 可以帮助我们创建链接,Form Helpers 可以帮助我们创建表单,Text Helpers 提供一系列的格式化输出方式,Cookie Helpers 能帮助我们设置和读取COOKIE, File Helpers 能帮助我们处理文件,等等。

跟其他部分不同的是,辅助函数不是用类的方式来实现的。它们仅仅是一些简单的过程处理函数。 每个辅助函数处理一个特定的任务,并且不必依靠其他函数。

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

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

载入辅助函数

载入辅助函数是非常简单的:

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

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

例如,要载入文件名为url_helper.php的URL Helper,你将会用到下面的语句:

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

辅助函数可以在你的控制器(controller)的任何地方被载入。

URL辅助函数的使用

site_url()

生成指定的完整URL。如果在config.php 文件中指定了base_url会返回指定的值,否则自动获取。 当你将URI段作为参数传给这个函数时,index.php 文件名 (或者是你在config中自定义的 index_page 文件名) 会被加到URL后面, 而且会加上你在config中定义的 url_suffix 后缀。

无论什么时候需要生成 URL ,都鼓励您使用该函数, 这样当您的根 URL 改变的时候更具有可移植性。

作为参数传递给该函数的 URI 段可以是一个字符串。如:

echo site_url("news/local/123");

上面的例子将返回: http://example.com/index.php/news/local/123

base_url()

返回在 config.php 中设定的 base_url。例:

echo base_url();

这个函数和site_url返回相同,只是 index_pageurl_suffix 不再被追加。

site_url函数一样, 作为参数传递给该函数的 URI 段可以是一个字符串:

echo base_url("blog/post/123");

上面的例子将返回: http://example.com/blog/post/123

这个函数非常有用,这就使得可以用它来指定文件的路径,像是image路径或者css路径。

建立自己的辅助函数

可以在你的 application/helpers/ 目录下创建一个新的 helper 辅助函数,文件名为xx_helper.php。如:

<?php
//
//CI中的自定义函数,存放在application目录下的helpers目录中。文件名为xxx_helper.php
//

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * [p 更友好的打印函数]
 * @param  [type] $in [数组或字符串]
 * @return [type]     [description]
 */
function p($in){
    echo "<pre>";
    print_r($in);
    echo  "</pre>";
}

/**
 * [utf8 设置]
 * @return [type] [description]
 */
function utf8(){
    header("Content-type:text/html;charset=utf-8");
}

/**
 * [success 显示信息,并跳转到指定指定位置(控制器/方法)]
 * @param  [type] $url [控制器/方法]
 * @param  [type] $msg [提示信息]
 * @return [type]      [description]
 */
function message($url,$msg){
    utf8();
    $url = site_url($url);
    echo "<script type='text/javascript'>alert('$msg');location.href='$url';</script>";
    exit();
}
?>

自定义辅助函数,当然也需要载入,然后就可以使用辅助函数,例如:

<?php
class Tools extends CI_Controller{
    public function index() {
        $this->load->helper( 'tools' );
        $this->load->helper( 'url' );
        message( 'http://www.baidu.com', '百度一下' );
    }
}

results matching ""

    No results matching ""