php-即使已声明自动加载函数,也无法重新声明该函数

php-即使已声明自动加载函数,也无法重新声明该函数,php,Php,我有一个web应用程序,其中包含一些文件。我目前关心的文件是index.php和inc/Autoloader.php 目前,在index.php中,我有一个include(dirname(_文件)“/inc/Autoloader.php”)在myindex.php中。在这行之前,我已经包括了我的标题,其中有我的导航栏和其他 当我尝试访问我的索引时,PHP会输出以下错误: PHP Fatal error: Cannot redeclare load_class() (previously decl

我有一个web应用程序,其中包含一些文件。我目前关心的文件是
index.php
inc/Autoloader.php

目前,在index.php中,我有一个
include(dirname(_文件)“/inc/Autoloader.php”)在my
index.php
中。在这行之前,我已经包括了我的标题,其中有我的导航栏和其他

当我尝试访问我的索引时,PHP会输出以下错误:

PHP Fatal error: Cannot redeclare load_class() (previously declared in /redacted/directory/webroot/inc/Autoloader.php:17) in /redacted/directory/webroot/inc/Autoloader.php on line 17
这是我的自动加载器功能:

function Infinia_load_class($classname) {

    // Don't __DIR__ (PHP Magic Constant __DIR__ is not in PHP 5.3)

    $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'infinia_class.'.strtolower($classname).'.php';

    if (is_readable($filename)) {
        require $filename;
        if (file_exists(dirname(__FILE__)."/../InfiniaLegit.config.php")) {
            require dirname(__FILE__)."/../InfiniaLegit.config.php";
        } else {
            require dirname(__FILE__)."/config.php";
        }
    }


}

if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
    //SPL autoloading was introduced in PHP 5.1.2
    if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
        spl_autoload_register('Infinia_load_class', true, true);
    } else {
        spl_autoload_register('Infinia_load_class');
    }
} else {
    /**
     * Fall back to traditional autoload for old PHP versions
     * @param string $classname The name of the class to load
     */
    function __autoload($classname)
    {
        Infinia_load_class($classname);
    }
}
我已经检查了整个项目,没有看到任何重新说明功能的迹象

如果有人知道发生了什么,我们将不胜感激!谢谢


编辑1:更新到Git中最新的自动加载器

1。上述代码与git repo中的自动加载器不同。2.为什么每次自动加载类时都需要相同的配置文件?3.使用上面的代码,您可能会得到许多“已声明”的类,因为一些配置文件是将反复加载的类。如果类还没有加载,就让自动加载程序加载它们。@MagnusEriksson这是我在自动加载程序中加载配置的唯一原因,因为配置必须加载到每个文件中,然后你需要重新考虑你的设计。创建一个加载配置文件的配置类,并重用同一个类实例。无论哪种方式,如果您不断重复地要求相同的类,您都会得到错误。1。上述代码与git repo中的自动加载器不同。2.为什么每次自动加载类时都需要相同的配置文件?3.使用上面的代码,您可能会得到许多“已声明”的类,因为一些配置文件是将反复加载的类。如果类还没有加载,就让自动加载程序加载它们。@MagnusEriksson这是我在自动加载程序中加载配置的唯一原因,因为配置必须加载到每个文件中,然后你需要重新考虑你的设计。创建一个加载配置文件的配置类,并重用同一个类实例。无论哪种方式,如果您不断重复地要求相同的类,您都会得到错误。