用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1689|回复: 2
收起左侧

自定义类的autoload 问题

[复制链接]
发表于 2014-4-27 22:09:10 | 显示全部楼层 |阅读模式
本帖最后由 sailh 于 2014-4-27 22:37 编辑

自定义了一个类Base, 并且把base.class.php 放到了application/libraries下在一个控制器类中定义一个继承该类的Child
class Child extends Base

但是一运行,就出错:Fatal error: Class 'Base' not found

没办法,在根目录的index.php 里加了个函数:
function __autoload($class_name) {
        $file = (dirname(__FILE__).'/application/libraries/'.$class_name.'.class.php');
        if (!file_exists($file)) {
                return false;
        }else {
                require_once($file);
        }
}
这下解决问题了。但是总觉得不爽。


请问大虾,这是正确的解决方法吗?如果这是正确的方法,这是不是CI 应该改进的地方呢?
如果不是,还有什么好办法?
谢谢。









发表于 2014-4-28 10:58:50 | 显示全部楼层
找不到是因为你没加载,ci的确没用__autoload的自动加载功能,但也设置了加载类,不过需要手动添加
application/config/autoload.php里的$autoload['libraries']

两者孰优孰劣,这就问大神了,有的说__autoload对效率是有影响的,如果对自己写的手动load机制非常有信心的话,可以不用__autoload。

当然,就像你写的一样,扩展一个__autoload也不是难事。
发表于 2014-4-28 14:12:13 | 显示全部楼层
看手册~ 自定义类也是有一定的写法的~ 类文件名,类名~ 遵循规则都是可以加载的

本版积分规则