0

我只是在学习如何使用 spl_autoload_register

我有一个看起来像这样的文件夹结构:

lib/projectname/home/homepage.php

所以如果我包含这样的文件,它可以工作:

include("lib/projectname/home/homepage.php");
$home = new homepage();

我添加了一个如下所示的 autoload.php 文件:

function myclass($class_name) {
   $class_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name) . '.php';
   require_once($class_name);
 }

spl_autoload_register('myclass');

现在,如果我尝试使用该类,我将像这样引用它:

require_once("autoload.php");

$home = new lib_projectname_home_homepage;

当我这样做时,我收到以下错误:

Fatal error: Class 'lib_projectname_home_homepage' not found

所以看起来好像类文件的加载正在工作,但它没有在文件中找到类?

实际的 homepage.php 文件如下所示:

class homepage {

    function __construct(){

        echo "homepage";
    }

}

为了使其正常工作,我需要进行哪些更改?

4

1 回答 1

3

改变

class homepage {
    function __construct(){
        echo "homepage";
    }
}

class lib_projectname_home_homepage {
    function __construct(){
        echo "homepage";
    }
}

或更改:

require_once($class_name);

require_once('lib/projectname/home/' . $class_name);

接着:

$home = new homepage();

自动加载器的概念只是查找具有给定名称的类。它不会即时更改类名。

于 2013-01-09T21:18:54.943 回答