__autoload()似乎没有在PHP中做任何事情

时间:2011-02-03 21:27:20

标签: php xampp autoload

我正在运行最新版本的XAMPP,并且autoload()似乎没有按预期工作。我几乎用PHP手册中的那个替换了我以前的自动加载,但无济于事。

在放入一些echo和die()之后,我得出结论,根本没有调用__autoload。

class Main
{

    var $config_data;

    function __autoload($class_name) {
        echo "hello.";
        // If the file exists, require it
        if (file_exists(SYSTEMDIR.$class_name.".".EXT)) {
            echo 'Autoloader: The class exists.';
            (require_once(SYSTEMDIR.$class_name.".".EXT))
                or die("I tried to autoload class $class_name, but it failed! =(");
        } else {
            // The file didn't even exist. Die.
            die("I was going to autoload class $class_name, but it didn't exist! =(");
        }

    }

    /*
     * Function __construct
     * @param datatype variable description
     * @return datatype description
     */
   function __construct(/* $arg */) {
       //Load the config

       $this->config = new Config;

       //Load the uri class:
       $this->uri = new Uri;
   }

}

它不会输出位于__autoload()顶部的“hello”。

唯一的输出是:

  

致命错误:未找到“配置”类   在E:\ xampplite \ htdocs \ system \ Main.php中   第84行

3 个答案:

答案 0 :(得分:4)

必须在课外定义AFAIK函数__autoload。如果要将自动加载功能实现为类的一部分,则应使用回调和spl_autoload_register

答案 1 :(得分:2)

那是因为您声明了Main->__autoload()函数(即类方法)而不是全局__autoload()

答案 2 :(得分:1)

__autoload不会在课程中。它习惯于包含该类所在的文件。

您需要在初始脚本中添加自动加载功能才能让它执行任何操作。