我有5个脚本,比方说:database.php,parent.php,child1.php,child2.php和somescript.php
parent.php类看起来像这样:
include 'database.php';
class Parent {
public $db;
function __construct() {
$this->db = new Database();
}
}
Run Code Online (Sandbox Code Playgroud)
child1和child2类看起来像这样:
include 'parent.php';
class Child1 extends Parent {
function __construct() {
parent::__construct();
}
function useDb() {
$this->db->some_db_operation();
}
}
Run Code Online (Sandbox Code Playgroud)
问题
当我尝试在somescript.php中包含child1和child2时,它返回以下错误:
无法声明类数据库,因为该名称已在第4行的database.php中使用(这是包含单词'class Database'的行)
但是,如果我只包含一个文件(child1或child2),它的效果很好.
我该如何纠正?
M31*_*M31 32
你想使用include_once()或require_once().另一种选择是创建一个附加文件,其中所有类包括在正确的顺序中,这样他们就不需要调用包含它们自己:
"classes.php"
include 'database.php';
include 'parent.php';
include 'child1.php';
include 'child2.php';
Run Code Online (Sandbox Code Playgroud)
那么你只需要:
require_once('classes.php');
Run Code Online (Sandbox Code Playgroud)
您应该使用 require_once 和 include_once。在parent.php内部使用
include_once 'database.php';
Run Code Online (Sandbox Code Playgroud)
并在child1.php和child2.php内部使用
include_once 'parent.php';
Run Code Online (Sandbox Code Playgroud)