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

Posted

技术标签:

【中文标题】致命错误:无法声明类错误,因为该名称已在使用中【英文标题】:Fatal error: Cannot declare class Error, because the name is already in use 【发布时间】:2019-02-17 11:39:48 【问题描述】:

我不明白为什么我的机器运行 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",它仍然会报告相同的消息。

【问题讨论】:

【参考方案1】:

Error 在 PHP 7 中是 a built-in class。

因此,您不能创建class Error

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

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

【讨论】:

【参考方案2】:

如前所述,'Error' 是 PHP 7 中的内置类。您有多种选择:

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

<?php
namespace MyApp\Errors;
class Error 

那么当你使用它时...

$error = new \MyApp\Errors\Error;

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

<?php
class AppError 

推荐:

一般来说,类应该放在同名的文件中 作为类本身。 “AppError”类应该在文件“AppError.php”中

如果您使用命名空间,则命名空间应与所在的目录匹配 该文件位于。如果您有 MyApp\Errors,您可以将其放入“MyApp/Errors/Error.php”。

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

【讨论】:

以上是关于致命错误:无法声明类错误,因为该名称已在使用中的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:无法声明类 ProductFilterIterator,因为该名称已在

以 Clover XML 格式生成代码覆盖率报告 ... PHP 致命错误:无法声明类 ...,因为名称已在

升级到 PHP 7.0.8 后出现“致命错误:无法声明类”

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

“无法声明类 App\Http\Controllers\category,因为该名称已在使用中”

无法声明类 App\User,因为该名称已在我的浏览器中使用