致命错误:无法重新声明类客户

时间:2011-04-10 10:40:26

标签: php class

我收到了这个错误:

Fatal error: Cannot redeclare class Customer

然后我添加了以下代码:

if (!class_exists('Customer')) {
    include('include/customer.class.php');
}

为什么我仍然会收到错误?

我有一个文件(file1.php),它声明了Customer()类。

在file1.php中,我对file2.php进行了ajax调用

在file2.php中,我再次声明Customer()类。

在file2.php中,只有1个Customer()类声明。

4 个答案:

答案 0 :(得分:5)

检查您的服务器是否像APC一样运行opcode cacher - 这是导致错误的原因。我最近遇到过它。

答案 1 :(得分:1)

显然,由于我发出的事实:

if (!class_exists('Customer')) {

该类不存在,因此类本身以某种方式重复自身。

我在应用程序的许多其他页面中使用此类没有问题。

我简单地删除了整个事情:

if (!class_exists('Customer')) {
  include('include/customer.class.php');
}

它在某种程度上起作用,它是预制的!

  1. 如果该类存在,则永远不应包含该类文件......
  2. 因此不存在该课程。
  3. 一旦被收录,它就说已经包括在内......
  4. 非常非常奇怪......

    嗯,它现在正在工作......我想我会留下它......

答案 2 :(得分:0)

使用include_once()。如果仍然给你一个错误,问题是你在“include / customer.class.php”文件中多次声明该类

http://php.net/include_once

答案 3 :(得分:0)

错误可能是由多次定义的类引起的,例如:

class Foo() {}
class Foo() {} // Fatal error

如果您不确定您的课程被包括多少次,您可以做两件事:

  1. 使用include_once()require_once()以确保该文件只需“一次”。
  2. 每次包含该文件时,请写下您提供的代码:

    if (!class_exists('Customer')) {
        include('include/customer.class.php');
    }
    
  3. 我更喜欢第一个。 你的问题是上面描述的问题。必须有一个多次声明类的地方。没有任何代码很难说清楚。

    以下是一些参考资料: