首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >致命错误:无法声明类错误,因为名称已经在使用中

致命错误:无法声明类错误,因为名称已经在使用中
EN

Stack Overflow用户
提问于 2018-09-12 19:02:14
回答 2查看 21.9K关注 0票数 5

我不明白为什么运行PHP 7.2.9的机器会出现以下错误:

致命错误:无法声明类错误,因为该名称已在第3行的controllers\error.php中使用

我有一个名为controllers/error.php的文件,它包含:

代码语言:javascript
代码运行次数:0
运行
复制
<?php

class Error {

    function __construct() {
        echo 'Error: 404 not found the file.';
    }

}

同时,我有一个名为/index.php的文件,它包含:

代码语言:javascript
代码运行次数:0
运行
复制
require "controllers/error.php";
$controller = new Error;

即使我从require改为require_once "controllers/error.php",它仍然在报告相同的消息。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-12 19:04:12

Error是PHP7中的内建的班级

因此,您不能制作class Error {}

重命名类,或将其命名为在名称空间中,以避免冲突。

(或者,作为第三种选择,您可以考虑使用/扩展内置类,而不是从头开始创建自己的错误处理系统。)

票数 10
EN

Stack Overflow用户

发布于 2018-09-12 19:23:58

如前所述,“Error”是PHP 7中内置的类。

(1)将类放在命名空间中

代码语言:javascript
代码运行次数:0
运行
复制
<?php
namespace MyApp\Errors;
class Error {
}

然后当你使用它..。

代码语言:javascript
代码运行次数:0
运行
复制
$error = new \MyApp\Errors\Error;

(2)使用与AppError不同的名称。

代码语言:javascript
代码运行次数:0
运行
复制
<?php
class AppError {
}

推荐:

通常,类应该放在与类本身完全相同的文件中。类"AppError“应该在文件"AppError.php”中

如果您使用的是名称空间,那么命名空间应该与文件所在的dir匹配。如果您有MyApp\Error.php,则将其放入“MyApp/Error.php”中。

类“MyApp\Error\Error”将位于dir /Error.php中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52301800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档