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