W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
輔助函數,顧名思義,是幫助我們完成特定任務的函數。每個輔助函數文件都是某一類 函數的集合。例如, URL 輔助函數 幫助我們創(chuàng)建鏈接,表單輔助函數幫助 我們創(chuàng)建表單元素,本文輔助函數 幫助我們處理文本的格式化,Cookie 輔助函數 幫助我們讀取或設置 Cookie ,文件輔助函數 幫助我們處理文件,等等等等。
不同于 CodeIgniter 中的大多數系統(tǒng),輔助函數沒有使用面向對象的方式來實現的。 它們是簡單的過程式函數,每個函數處理一個特定的任務,不依賴于其他的函數。
CodeIgniter 默認不會自己加載輔助函數,所以使用輔助函數的第一步就是加載它。 一旦加載了,它就可以在你的 控制器 和 視圖 中全局訪問了。
一般情況下,輔助函數位于 system/helpers 或者 application/helpers 目錄 目錄下。CodeIgniter 首先會查找 application/helpers 目錄,如果該目錄不存在, 或者你加載的輔助函數沒有在該目錄下找到,CodeIgniter 就會去 system/helpers/ 目錄查找。
可以使用下面的方法簡單的加載輔助函數:
$this->load->helper('name');
name 參數為輔助函數的文件名,去掉 .php 文件后綴以及 _helper 部分。
例如,要加載 URL 輔助函數 ,它的文件名為 url_helper.php ,你可以這樣加載它:
$this->load->helper('url');
輔助函數可以在你的控制器方法的任何地方加載(甚至可以在你的視圖文件中加載,盡管這不是 個好的實踐),只要確保在使用之前加載它就可以了。你可以在你的控制器的構造函數中加載它, 這樣就可以在該控制器的任何方法中使用它,你也可以在某個需要它的函數中單獨加載它。
注解
上面的加載輔助函數的方法沒有返回值,所以不要將它賦值給變量,直接調用就好了。
如果你需要加載多個輔助函數,你可以使用一個數組,像下面這樣:
$this->load->helper(
array('helper1', 'helper2', 'helper3')
);
如果你需要在你的整個應用程序中使用某個輔助函數,你可以將其設置為在 CodeIgniter 初始化時 自動加載它。打開application/config/autoload.php 文件然后將你想加載的輔助函數添加到 autoload 數組中。
一旦你想要使用的輔助函數被加載,你就可以像使用標準的 PHP 函數一樣使用它們。
譬如,要在你的視圖文件中使用 anchor() 函數創(chuàng)建一個鏈接,你可以這樣做:
<?php echo anchor('blog/comments', 'Click Here');?>
其中,"Click Here" 是鏈接的名稱,"blog/comments" 是你希望鏈接到 controller/method 的 URI 。
為了擴展輔助函數,你需要在 application/helpers/ 目錄下新建一個文件, 文件名和已存在的輔助函數文件名一樣,但是要加上 MY_ 前綴(這個可以配置, 見下文)。
如果你只是想往現有類中添加一些功能,譬如增加一兩個方法,或者修改輔助函數中的 某個函數,這時替換整個類感覺就有點殺雞用牛刀了。在這種情況下,最好的方法是 擴展類。
注解
“擴展”一詞在這里可能不是很恰當,因為輔助函數函數都是過程式的獨立函數, 在傳統(tǒng)編程中并不能被擴展。不過在 CodeIgniter 中,你可以向輔助函數中添加函數, 或者使用你自己的函數替代輔助函數中的函數。
譬如,要擴展原始的 數組輔助函數 ,首先你要創(chuàng)建一個文件 application/helpers/MY_array_helper.php , 然后像下面這樣添加或重寫函數:
// 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);
}
用于擴展輔助函數的文件名前綴和擴展類庫和核心類是一樣的。要自定義這個前綴,你可以打開 application/config/config.php 文件然后找到這項:
$config['subclass_prefix'] = 'MY_';
請注意所有原始的 CodeIgniter 類庫都以 CI_ 開頭,所以請不要使用這個 作為你的自定義前綴。
在目錄里你可以找到所有的輔助函數清單,你可以瀏覽下它們看看它們都是做什么的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: