我收到此错误require_once错误:需要在PHP
Fatal error: Cannot redeclare class Logger in C:\xampp\htdocs\Speakom\API\Logger.php on line 3
改变我所有的require_once要求之后,这个错误仍然存在。有没有办法来防止这个错误?为什么会发生,如果我没有require_once?
是否有条件声明,我可以用它来查询文件是否已包含,然后包括它?
我收到此错误require_once错误:需要在PHP
Fatal error: Cannot redeclare class Logger in C:\xampp\htdocs\Speakom\API\Logger.php on line 3
改变我所有的require_once要求之后,这个错误仍然存在。有没有办法来防止这个错误?为什么会发生,如果我没有require_once?
是否有条件声明,我可以用它来查询文件是否已包含,然后包括它?
你有没有检查你实际上没有两个记录器类在你的代码中的任何地方?
检查代码中的
class Logger {}
我用netbeans检查过。它被定义为只有一次..它是所需要的stamuments问题 – Matrix001
那是因为你有两个类叫做Logger
。也许你有复制粘贴的类文件,但忘了更改类名?
一个办法来解决这个错误是总是宣称这样你的类:
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已经定义和声明。以前在您的代码中的某处。 – gorelative
定义了两次....我扫描了代码..我还没有定义2个记录器类 – Matrix001
该请求困扰我 – Matrix001