PHP 板


LINE

看板 PHP  RSS
最近换到新工作环境,就马上遇到CI 2.0配合HMVC(外挂)。 结果用没几天就直接撞到了二个问题。 第一个:MODEL里面的DB失效。 这看起来像是设计者把DB从MODEL里面移出来,变成必须先宣告: $this->load->database(); 或是在autoload中的libraries事先载入database类别。 为了解除原本习惯的困扰我是直接放在autoload去跑了。 第二个:get_instance()无法取得controller的属性和方法,但是却可以放入属性。 这个就是这二天遇到的问题,get_instance()说真的我还挺常使用的。 其实这个问题主要是出在使用HMVC时,载入的物件类别并不是CI_Controller 像我遇到的情形是使用者是采用「自订名称_Controller」 而get_instance()指向的目标是CI_Controller而非自订的CONTROLLER 解决方法是: 找到你的application/core/MY_Controller.php 当中把你要用的自行定义的CONTROLLER改成如下: class 自订名称_Controller extends MY_Controller { private static $instance; public function __construct() { parent::__construct(); self::$instance =& $this; } public static function &get_instance() { return self::$instance; } } 在system/core/Codeigniter.php这只档案中找到215行开始的 function &get_instance() { return CI_Controller::get_instance(); } 然後你有二种做法可以选择。 第一个: 改成: function &get_instance($controller = 'CI_Controller') { return $controller::get_instance(); } 那使用方法就是: $CI = &get_instance('自订名称_Controller'); 不过想必每次都这样打有点小麻烦吧! 所以另一个方法就是在上面未改的get_instance()的程式码之後加上这样: function &my_instance(){ return 自订名称_Controller::get_instance(); } 而使用方法就是: $CI = &my_instance(); 这边有一点要强调。 你不能把&my_instance()写在有autoload的类别的建构式。 这是因为在autoload时,你的自订controller根本还没被载入。 一但你使用就会告诉你类别不存在。 额外说明:&get_instance()在HMVC中无法取得自订CONTROLLER的方法和属性,但为什麽 却可以把属性塞进自订CONTROLLER?仔细想一下自订CONTROLLER虽然继承自 MY_Controller,而MY_Controller又跑去继承MX_Controller,最终…… MX_Controller继承自原本的CI_Controller。 所以当你把属性塞给CI_Controller的话,其他的子类别就通通继承到了。 但是今天主要是要读取CONTROLLER时,状况会反过来发生父类别并不具备子类别的属性 和方法。导致子类别所发生的改变,无法被父类别识别。 听说官方要出正式的HMVC...... 希望能够不要发生这样的问题。 -- 音GAME的音符比浊水溪的石头还多。 比森林里的树叶还要繁密。 但我全接的决定比奇莱山还要坚定。 柯拿米.巴莱 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.248.170.93







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

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

TOP