致命错误:无法声明类错误,因为该名称已被使用

时间:2018-09-12 19:02:14

标签: php

我不明白为什么我的运行PHP 7.2.9的计算机会出现此错误:

  

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

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

<?php

class Error {

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

}

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

require "controllers/error.php";
$controller = new Error;

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

2 个答案:

答案 0 :(得分:6)

Error在PHP 7中为a built-in class

因此,您无法创建class Error {}

重命名该类,或将其放入in a namespace以避免冲突。

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

答案 1 :(得分:0)

如前所述,“错误”是PHP 7中的内置类。您有几种选择:

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

<?php
namespace MyApp\Error;
class Error {
}

然后在您使用它时...

$error = new \MyApp\Error;

(2)使用不同的名称,例如AppError。

<?php
class AppError {
}

推荐

通常,应将类放入名称完全相同的文件中 作为班级本身。类“ AppError”应位于文件“ AppError.php”中

如果使用名称空间,则该名称空间应与目录匹配,其中 该文件位于。如果您有MyApp \ Error,请将其放入“ MyApp / Error.php”。

“ MyApp \ Errors \ Error”类位于MyApp / Errors / Error.php目录中。