CodeIgnite中的辅助函数
辅助函数,在CodeIgnite中称为Helpers,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URL Helpers
可以帮助我们创建链接,Form Helpers
可以帮助我们创建表单,Text Helpers
提供一系列的格式化输出方式,Cookie Helpers
能帮助我们设置和读取COOKIE, File Helpers
能帮助我们处理文件,等等。
跟其他部分不同的是,辅助函数不是用类的方式来实现的。它们仅仅是一些简单的过程处理函数。 每个辅助函数处理一个特定的任务,并且不必依靠其他函数。
CodeIgniter 默认是没有载入辅助函数文件的,所以如果你想用辅助函数,就必须先载入它。 一旦被载入,辅助函数将全局可用(globally available),你可以在 controller 和 views 中使用它们。
辅助函数文件一般保存在 system/helpers
或 application/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_page
和 url_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', '百度一下' );
}
}