php - spl_autoload_register() 在不同目录中

标签 php class directory-structure spl-autoload-register

我有一个文件可以自动加载我的每个类。
这是它包含的内容:

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

但是当我require_once这个文件来自我的 中的另一个 php 文件 Ajax 文件夹,它会尝试寻找 类(class) ,该函数将从我的类中查找路径:main_folder/ajax/classes而不仅仅是 main_folder/classes .

有谁知道如何解决这一问题 ?

修复 :
spl_autoload_register(function($class){
    if (file_exists('classes/' . $class . '.php')) {
       require_once 'classes/' . $class . '.php';
    }
    elseif (file_exists('../classes/' . $class . '.php')) {
       require_once '../classes/' . $class . '.php';
    }
    elseif (file_exists('../../classes/' . $class . '.php')) {
       require_once '../../classes/' . $class . '.php';
    }

最佳答案

你应该简单地使用这个函数一次 - 在主文件(通常是 index.php)中而不是在另一个文件中。

但是,如果这是不可能的(但我看不出任何理由何时不可能),您可以通过以下方式更改它:

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

关于php - spl_autoload_register() 在不同目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717626/

相关文章:

c++ - 为什么将标题放在单独的目录中?

php - 在 Symfony Controller 中访问容器

php - 使用 php 更新 mysql 中的信息

php - 生成ip和限时下载链接

c++ - 读取私有(private)变量类成员

java - Java中的泛型,返回泛型类Set<T>的集合

php - Codeigniter MySQL 一个连接查询,结果中存在列名冲突

c++ - 类设计问题

java - 在 IntelliJ IDEA 中重命名模块

pug - 为什么 Jade 找不到我的资源?