【问题标题】:Fatal error: Cannot declare class Error, because the name is already in use致命错误:无法声明类错误,因为该名称已在使用中
【发布时间】:2023-03-10 09:10:01
【问题描述】:

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

【问题讨论】:

    标签: 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 目录中。

      【讨论】:

        猜你喜欢
        • 2016-11-03
        • 2020-03-20
        • 2020-10-10
        • 2019-12-25
        • 2019-04-15
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 2019-07-12
        相关资源
        最近更新 更多