PHP:无法声明类,因为该名称已在使用中

2022-08-30 10:25:11

我有5个脚本:

  1. database.php
  2. parent.php
  3. child1.php
  4. child2.php
  5. somescript.php

parent.php类看起来像这样:

include 'database.php';

class Parent {
    public $db;
    function __construct() {
        $this->db = new Database();
    }
}

和 类如下所示:child1.phpchild2.php

include 'parent.php';

class Child1 extends Parent {
    function __construct() {
        parent::__construct();
    }

    function useDb() {
        $this->db->some_db_operation();
    }
}

问题

当我尝试在某个脚本中同时包含 child1 和 child2 时.php,它会返回以下错误:

无法声明类 Database,因为该名称已在数据库中使用.php第 4 行(这是包含单词“class Database”的行)

但是,如果我只包含一个文件(child1 或 child2),它效果很好。

我该如何纠正?


答案 1

您希望使用 include_once()require_once()。另一种选择是创建一个附加文件,其中所有类都包含在正确的顺序中,这样他们就不需要调用 include 本身:

“类.php”

include 'database.php';
include 'parent.php';
include 'child1.php';
include 'child2.php';

然后,您只需要:

require_once('classes.php');

答案 2

尝试使用使用或代替或include_oncerequire_onceincluderequire


推荐