php - Laravel 8 自定义帮助函数 PHP 致命错误:无法重新声明以前在 C:(path)Helpers.php 中声明的 functionName()
问题描述
我在 App\Helpers.php 中有一个自定义函数。当我在刀片文件的 if 语句中使用该函数时。我在 Laragon 错误日志中看到错误。
PHP Fatal error: Cannot redeclare CheckInvalidPlan() (previously declared in C:\laragon\www\projectname\app\Helpers.php:6) in C:\laragon\www\projectname\app\Helpers.php on line 6
但是,事情按预期工作。但是为什么会导致此错误,我该如何解决?
#更新
这是我在 Helpers.php 中的函数
function CheckInvalidPlan($id)
{
if (Plan::find($id) == null)
{
return true;
}
}
这是我在 Controller 中的 if 语句。
if (CheckInvalidPlan ($request->plan_id))
{
return back()->with('invalid', 'Invalid membership plan spesified.');
}
解决方案
您可以通过检查您的函数是否已存在来绕过此错误:
if(! function_exists('CheckInvalidPlan')) {
function CheckInvalidPlan($id)
{
if (Plan::find($id) == null)
{
return true;
}
}
}
这就是 Laravel 助手的声明方式:
if (! function_exists('today')) {
/**
* Create a new Carbon instance for the current date.
*
* @param \DateTimeZone|string|null $tz
* @return \Illuminate\Support\Carbon
*/
function today($tz = null)
{
return Date::today($tz);
}
}
但是,更简洁的方法是了解为什么您的帮助文件被加载两次。
很难准确地告诉您错误可能出在哪里,但是您应该检查所有类,app\Helpers.php
永远不应该手动要求该文件。它应该由作曲家自动加载,如本答案中所述(感谢 N69S)。
推荐阅读
- java - 如果我在 RecyclerView 项目中选择一个按钮,则会自动单击按钮
- node.js - 在 Windows 上运行 wiki.js 作为服务的正确 pm2 命令是什么?
- docker - 如何在 Docker hub 上的标签下判断软件版本
- jquery - 如何使用 jquery、ajax 和 xml 显示和解析从 rss 提要到 html 站点的图像?
- java - 我可以告诉杰克逊在将 Map 转换为 POJO 时简单地设置匹配类型的值,而不是反序列化和重新序列化吗?
- python - 使用用户输入显示列表中的特定信息 - Python 3
- javascript - 如果它下降到另一条线(相交后),则将 amcharts 线更改为不同的颜色
- azure - 在 Azure DevOps 管道中运行 ansible 脚本
- angular - 来自 util.js 的 Angular 6 SCSS 编译错误
- javascript - 未定义不是二维数组的对象