CodeIgniter輔助函式helper詳解

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

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_來自定義字首.

您可能感興趣的文章:

解析PHPExcel使用的常用說明以及把PHPExcel整合進CI框架的介紹Codeigniter PHPExcel實現匯出資料到Excel檔案Codeigniter生成Excel文件的簡單方法CI框架給檢視新增動態資料CI(CodeIgniter)框架中的增刪改查操作CodeIgniter模板引擎使用例項CI框架(CodeIgniter)實現的匯入、匯出資料操作示例

相關文章

IOS開發 最新文章