spl_autoload_register在不同的目录中

时间:2014-12-26 00:46:05

标签: php

/htdocs
    /classes
        DB.class.php
        USER.class.php
    /core
        init.php
    /ajax
        data.php
    /require
    ....
    ....

    index.php

init.php内我有这个功能。

spl_autoload_register(function($class) {
           require_once 'classes/' . $class . '.class.php';
    });

问题是我有这个USER类需要一些其他类(数据库类等),并且在ajax文件夹内的某些文件和require文件夹中的某些文件中使用。如果我在USER类中修复init.php的require路径以将其用于require文件夹中的文件,则它对ajax文件夹中的文件不起作用,反之亦然。 有谁知道如何解决这个问题?

warning: require_once(../core/init.php): failed to open stream: no such file or directory in c:\apache24\htdocs\classes\user.class.php on line 3

这是USER

Line 3: require_once 'core/init.php';

1 个答案:

答案 0 :(得分:1)

您可以定义多个包含路径

define('DS', DIRECTORY_SEPARATOR);
define('PS', PATH_SEPARATOR);
define('BP', dirname(__FILE__));

$paths = array(
    BP . DS . 'classes',
    BP . DS . 'core',
    BP . DS . 'ajax',
    get_include_path()
);

$includePaths = implode(PS, $paths);
set_include_path($includePaths);