如果我试图从其他函数内部创建一个类的实例,自动加载不起作用


Autoload doesn't works if I try to create an instance of a class from inside other function

help .php:需要放在index.php的顶部

function __autoload($className) {
    $path = ROOT_DIR.'/class/'.strtolower(trim($className)).'.class.php';
    if (file_exists($path)) {
        require_once($path);
    }
}
function load_libs($class_variable_name) {
    global $session;
    global $_libs;
    $_libs[$class_variable_name] = new $class_variable_name($session);
    return $_libs[$class_variable_name];
}

从index.php创建一个类的实例:

new some_class_one();

没有问题,它通过__autolload加载类文件。

但是,如果我调用:

load_libs('some_class_two');

I得到错误:在C:'wamp'www'helper.php on line

中找不到some_class_two类

知道该怎么做吗?

我刚刚在我的机器上测试了这个,它工作得很好。我无法复制这个问题。这是我正在运行的PHP版本:

$ php -v
PHP 5.4.17 (cli) (built: Aug 25 2013 02:03:38) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

我建议你从你的文件名中去掉.class。最好使用名称空间,并使名称空间/类名与文件系统匹配。除此之外,要么您的ROOT_DIR不正确,要么您的文件位于错误的位置。