PHP:无法声明类,因为该名称已在使用中
我有5个脚本:PHP:无法声明类,因为该名称已在使用中,php,oop,Php,Oop,我有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(); } } include 'parent.php'; class Ch
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();
}
}
include 'parent.php';
class Child1 extends Parent {
function __construct() {
parent::__construct();
}
function useDb() {
$this->db->some_db_operation();
}
}
child1.php
和child2.php
类如下所示:
include 'database.php';
class Parent {
public $db;
function __construct() {
$this->db = new Database();
}
}
include 'parent.php';
class Child1 extends Parent {
function __construct() {
parent::__construct();
}
function useDb() {
$this->db->some_db_operation();
}
}
问题
当我尝试在somescript.php中同时包含child1和child2时,它返回以下错误:
无法声明类数据库,因为该名称已在中使用
第4行的database.php(这一行包含单词“class database”)
但是,如果我只包含一个文件(child1或child2),它的效果会很好
如何更正此错误?您想使用或。另一个选项是以正确的顺序创建一个包含所有类的附加文件,这样它们就不需要调用includes本身:
“classes.php”
那么你只需要:
require_once('classes.php');
尝试使用use
include\u once
或require\u once
而不是include
或require
我以前遇到过这个问题,要解决这个问题,
只要确保:
我有类:核心、路由器、权限和渲染 核心包括路由器类,然后路由器调用权限类,然后路由器u destruct调用呈现类,出现错误“无法声明类,因为名称已在使用” 解决方案:
我在Permission类中添加了uu destruct,而u destruct是空的,它是固定的…另一个包含u once或要求once的选项是使用类自动加载 您应该使用require\u一次,include\u一次。在parent.php内部使用
include_once 'database.php';
在child1.php和child2.php中使用
include_once 'parent.php';
无法声明类父级,因为它是PHP保留关键字,因此实际上它已经在windows上使用了。首选使用:
require_once\u DIR\u.'/database.PHP'
和require\u once\uu DIR\uu.'/parent.php
我的用户require\u once并且它成功地运行了我在我的项目中的任何地方都使用了include\u once,这种情况仍然存在。它过去是有用的before@Dan,您仍然需要确保包含的顺序正确,以便在定义类时已包含父类。应接受此答案。解决了这个问题,开门见山并提供了示例。我已经将ErrorController类的名称从“Error.php”更改为“ErrorHandler.php”,并对其进行了修复。由于PHP7,错误类是保留关键字,因此已在使用中[