对php spl_autoload_register的疑问

西瓜男 发布于 2013/08/03 08:29
阅读 430
收藏 1
PHP
init.inc.php的内容


//自动挂载类
function AutoLoad($classname){
// class类
$filepath = BASE_CLASS . $classname . '.class.php';
if (file_exists($filepath)) {
return include $filepath;
}
//lib库文件
$filepath = BASE_LIB . $classname . '.lib.php';
if (file_exists($filepath)) {
return include $filepath;
}
}
spl_autoload_register('AutoLoad');


在建一个test.class.php放在class文件夹下
class testclass
function method(){ 
echo 'Hello world'; 






然后index.php


require 'init.inc.php';
AutoLoad('test');
$test = new testclass();
$test->method();


如果在init.inc.php中注释掉spl_autoload_register('AutoLoad');
一样成功,问题就来了,spl_autoload_register有什么用呢?
加载中
-1
包菜兄
包菜兄
搞不清楼主为什么要自己调用Autoload
0
小虫0302
小虫0302

你手动调用Autoload(),那跟直接require有什么区别, 那就不是自动加载了.

自动加载是直接创建实例:

$obj = new Test();

0
南湖船老大
南湖船老大

手册有例子,PHP很简单的,看看手册就懂

class Loader{
    public static function loadClass(){
    }
    public static function loadLibClass($class){       
        import('Lib.driver.db.'.$class);
        import('Helper.'.$class);
    }
}
spl_autoload_register(array('Loader','loadLibClass'));
$a=new Image;

0
Tuesday
Tuesday

spl_autoload_register 实例化自动寻找, 扩展性就好得多.

__autoload               函数货自动寻找.  比较不好控制.

0
汤敏正
汤敏正
spl_autoload_register  是将一个自定义函数注册为自动加载,但是楼主你都手动调用了,用了等于没用..
0
月影又无痕
月影又无痕

楼主用错了,你这个用法不叫自动加载,而叫手动加载。

你看你,每次使用类时都手动调用了autoload('test'), 这不能算是自动加载。

正确的做法是不要再尝试手动调用任何加载函数。直接使用即可

返回顶部
顶部