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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP