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