Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的require和require_once错误_Php - Fatal编程技术网

php中的require和require_once错误

php中的require和require_once错误,php,Php,我得到这个错误: Fatal error: Cannot redeclare class Logger in C:\xampp\htdocs\Speakom\API\Logger.php on line 3 将所有我的require_一次性更改为require后,此错误仍然存在。有没有办法防止这个错误?如果我一次都不需要你,为什么会这样 是否有一个条件语句,我可以用来查询文件是否已经包含,然后再包含它?是否检查代码中实际上没有两个记录器类 检查您的代码是否有错误 类记录器{}您是否检查过代码中

我得到这个错误:

Fatal error: Cannot redeclare class Logger in C:\xampp\htdocs\Speakom\API\Logger.php on line 3
将所有我的require_一次性更改为require后,此错误仍然存在。有没有办法防止这个错误?如果我一次都不需要你,为什么会这样


是否有一个条件语句,我可以用来查询文件是否已经包含,然后再包含它?

是否检查代码中实际上没有两个记录器类

检查您的代码是否有错误


类记录器{}

您是否检查过代码中实际上没有两个记录器类

检查您的代码是否有错误


类记录器{}

这是因为您有两个称为记录器的类。也许您已经复制粘贴的类文件,但忘记更改类名

这是因为您有两个名为Logger的类。也许您已经复制粘贴的类文件,但忘记更改类名

避免该错误的一种方法是始终像这样声明类:

if(!class_exists('ClassName')) {
    class ClassName {
        // ...
    }
}
当然,这并不能解决同一类被多次导入的根本问题。检查应用程序的逻辑并确定需要它的位置

require和require_之间的差异

在第一组中,file1.php将执行两次。在第二种情况下,它将只执行一次。其实就这么简单


如果两者都给您一个错误,那么您试图包含的文件中可能有错误。请记住,包含的或必需的文件中的代码与包含它的点在同一范围内执行。

避免该错误的一种方法是始终像这样声明类:

if(!class_exists('ClassName')) {
    class ClassName {
        // ...
    }
}
当然,这并不能解决同一类被多次导入的根本问题。检查应用程序的逻辑并确定需要它的位置

require和require_之间的差异

在第一组中,file1.php将执行两次。在第二种情况下,它将只执行一次。其实就这么简单


如果两者都给您一个错误,那么您试图包含的文件中可能有错误。请记住,包含或必需文件中的代码与包含它的点在同一范围内执行。

错误在于require和require\u之间的差异。之前,require_once语句尝试加载文件一次,而任何后续包含都不会起任何作用。现在您已经更改了它,您需要跟踪在您的所有包含中,您在哪里执行所需的操作。记住,如果你想要它一次,包括它一次,就这样。PHP将其保持全局性,因此只要包含树中的一个文件包含该文件,就不需要将其包含在每个文件中。

错误在于require和require\u之间的差异。之前,require_once语句尝试加载文件一次,而任何后续包含都不会起任何作用。现在您已经更改了它,您需要跟踪在您的所有包含中,您在哪里执行所需的操作。记住,如果你想要它一次,包括它一次,就这样。PHP使其保持全局性,因此只要包含树中的一个文件包含该文件,就不需要将其包含在每个文件中。

只是猜测一下,您已经定义并声明了类记录器。以前在代码中的某个地方定义了两次。。。。我扫描了密码。。我还没有定义2个记录器类你真的是说你已经将所有的require\u更改为require?因为如果您试图要求一个多次声明类的文件,那么这肯定会导致您看到的错误。您不需要查询任何内容,只需使用require_一次,这就是它的用途。如果它没有包含,它将包含它,或者抱怨,否则它将一事无成xargs grep-E包括| require | grep Logger并检查您是否遗漏了任何内容。完全正确@Crisp。正是我下面说的。为此,您应该使用require_一次,除非您想一直跟踪每个include where。只是猜测一下,您已经定义并声明了类记录器。以前在代码中的某个地方定义了两次。。。。我扫描了密码。。我还没有定义2个记录器类你真的是说你已经将所有的require\u更改为require?因为如果您试图要求一个多次声明类的文件,那么这肯定会导致您看到的错误。您不需要查询任何内容,只需使用require_一次,这就是它的用途。如果它没有包含,它将包含它,或者抱怨,否则它将一事无成xargs grep-E包括| require | grep Logger并检查您是否遗漏了任何内容。完全正确@Crisp。正是我下面说的。你真的应该使用require_一次,除非你想一直跟踪每个include,所以如果我需要两次。。。即使它不需要一次,也会抛出一个异常。很好的破解。谢谢它能工作。如果你需要一个ext
ernal文件两次,只执行两次。如果它恰好是一个类定义,那么这就是您遇到这个问题的地方。在逻辑工作流中,需要多次“要求”同一文件。那么“要求”和“要求一次”有什么区别呢。。如果他们都抛出一个错误,如果我在代码中放了两次,那么如果我需要两次东西。。。即使它不需要一次..也会抛出一个异常..很好的破解..谢谢它能工作如果你需要一个外部文件两次,它只会执行两次。如果它恰好是一个类定义,那么这就是您遇到这个问题的地方。在逻辑工作流中,需要多次“要求”同一文件。那么“要求”和“要求一次”有什么区别呢。。如果它们都抛出一个错误,如果我在我用netbeans检查的代码中放了两次,那么它只定义了一次。。这是我用netbeans检查的问题。它只定义了一次。。这是最重要的问题