自定义类的autoload 问题
本帖最后由 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 应该改进的地方呢?
如果不是,还有什么好办法?
谢谢。
找不到是因为你没加载,ci的确没用__autoload的自动加载功能,但也设置了加载类,不过需要手动添加
application/config/autoload.php里的$autoload['libraries']
两者孰优孰劣,这就问大神了,有的说__autoload对效率是有影响的,如果对自己写的手动load机制非常有信心的话,可以不用__autoload。
当然,就像你写的一样,扩展一个__autoload也不是难事。 看手册~ 自定义类也是有一定的写法的~ 类文件名,类名~ 遵循规则都是可以加载的
页:
[1]