我收到此错误:
Fatal error: Cannot redeclare class Logger in C:\xampp\htdocs\Speakom\API\Logger.php on line 3
将我的所有 require_once 更改为 require 后,此错误仍然存在。有没有办法防止这个错误?如果我没有require_once,为什么会发生这种情况?
是否有条件语句可用于查询文件是否已包含然后包含它?
我收到此错误:
Fatal error: Cannot redeclare class Logger in C:\xampp\htdocs\Speakom\API\Logger.php on line 3
将我的所有 require_once 更改为 require 后,此错误仍然存在。有没有办法防止这个错误?如果我没有require_once,为什么会发生这种情况?
是否有条件语句可用于查询文件是否已包含然后包含它?
解决该错误的一种方法是始终像这样声明您的类:
if(!class_exists('ClassName')) {
class ClassName {
// ...
}
}
当然,这并不能解决您多次导入同一个类的根本问题。检查应用程序的逻辑并确定需要它的位置。
require
和之间的区别require_once
require 'file1.php';
require 'file1.php';
// versus...
require_once 'file1.php';
require_once 'file1.php';
在第一组中,file1.php
将执行两次。在第二个中,它只会执行一次。它真的是那么简单。
如果两者都给您一个错误,那么您尝试包含的文件中可能存在错误。请记住,包含或必需文件中的代码在与包含它的点相同的范围内执行。
错误在于 require 和 require_once 之间的差异。以前,require_once 语句尝试加载文件一次,任何后续包含都不会执行任何操作。现在您已经更改了它,您需要跟踪您在所有包含中的哪个位置执行了要求。请记住,如果您想要一次,请包含一次,仅此而已。PHP 将其全部保持在全局范围内,因此只要包含树中的一个文件包含该文件,您就不需要将其包含在每个文件中。
这是因为您有两个名为Logger
. 也许您复制粘贴了类文件但忘记更改类名?
您是否检查过您的代码中实际上没有两个 Logger 类?
检查你的代码
class Logger {}