PHP 板


LINE

看板 PHP  RSS
1/13修正內容: ----------------- 內文原本修改index.php的部份予以刪除,無需改index.php Loader.php修正目部內文以支援linux作業系統的server。 ----------------- CodeIgniter在網路上已經多所介紹過將system核心和application分家的做法。 也就是修改index.php的設定路徑之後,可以讓多個application共用一個system核心。 可是問題來了。 有的時候或許有一些類別或函式我們希望他會是一個核心提供的類別或函式。 而不是每開啟一個新的專案,就得把一些可以重複利用的功能又copy一次到專案資料夾 的application下的libraries或是helper。 或許有人想說反正system下就有libraries和helpers二個資料夾,有需要共用的寫在那 邊就好了。但是說真正,萬不一小心誤刪功能刪到核心檔(雖然用copy回來的就好了), 也不是一個長久之道。 做法上來說,如果能把原本抽離掉的application再給他「復活一下」,然後將核心共 用的libraries和helpers也寫在system/application/libraries和helpers,這樣的分 離方法相對的可以避免一些意外狀況。 目前的做法上對於命名就是為了避免專案的libraries和helpers檔名重複,所以放在 核心中的類別和helpers我是採取用「core_」做為前導詞。(這部份沒設限置,純看 個人喜好了。) 至於具體的做法,其實是將原本system中的libraries/Loader.php拿出來修改。 使用版本:1.7.2(3應該也行) Loader.php --------------------------------------------------------------------- function library($library = '', $params = NULL, $object_name = NULL) { 找到上面這個函式宣告,在函式一進來就直接加上下面的程式碼。 if(!file_exists('./application/libraries/'.$library.'.php') && (!file_exists(BASEPATH.'libraries/'.ucwords($library).'.php') || !file_exists(BASEPATH.'libraries/'.ucwords($library).'.php')) ){ $CI = &get_instance(); require_once(BASEPATH.'application/libraries/'.$library.'.php'); $CI->$library = new $library; return; } 再來找到下面這個函式宣告,並且找到第一個foreach function helper($helpers = array()) { if ( ! is_array($helpers)) { $helpers = array($helpers); } foreach ($helpers as $helper) { 加上以下的程式碼: if(!file_exists('./application/helpers/'.$helper.'_helper.php') && (!file_exists(BASEPATH.'helpers/'.$helper.'_helper.php') || !file_exists(BASEPATH.'helpers/'.ucwords($helper) .'_helper.php'))){ require_once(BASEPATH.'application/helpers/'.$helper.'_helper.php'); continue; } 完成之後記得「不要」存回system/libraries 而是存放在你要使用的專案檔的application/libraries 在你個人的專案檔有Loader時,會取代掉核心的那一隻。 (也就是說,如果你的專案需要用到核心類別和函式就放Loader.php,沒有就不要放。 目前測試過,在autoload下叫用核心類別也會自動載入。 注意:如果你專案類別和核心類別都共有一個同名類別或helpers時,會以你專案的檔 案為主,所以不會呼叫到核心的。 注意:如果你的專案函式和核心函式有相同的function name時將會導致異常,請避免 這樣的狀況。 忘記講了: 呼叫類別和函式的方法仍然是:$this->load->library()和 $this->load->helpers() 雖然我曾經一度搞出$this->load->library_sys()這種鬼東西。 好在有其他網友的建議之下,就順手改成符合原本做法的方式。 其實會搞出這種東西是老闆莫名奇妙的想法加上底下工程師的期望............. 反正弄出來也覺得不錯用。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.130.157 ※ 編輯: tkdmaf 來自: 218.167.139.26 (01/11 08:49)
1F:→ liaosankai:/_\所以我才會改用Kohana3 01/11 13:26
2F:→ tkdmaf:問題是我得支援php4的環境。 01/11 14:46
※ 編輯: tkdmaf 來自: 59.117.2.115 (01/13 10:35)
3F:推 amosa:使用Hook pre_system會比較漂亮~ 01/13 17:15







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP