php-即使已声明自动加载函数,也无法重新声明该函数
我有一个web应用程序,其中包含一些文件。我目前关心的文件是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
index.php
和inc/Autoloader.php
目前,在index.php中,我有一个include(dirname(_文件)“/inc/Autoloader.php”)代码>在myindex.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这是我在自动加载程序中加载配置的唯一原因,因为配置必须加载到每个文件中,然后你需要重新考虑你的设计。创建一个加载配置文件的配置类,并重用同一个类实例。无论哪种方式,如果您不断重复地要求相同的类,您都会得到错误。