首页 > 解决方案 > 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.');
        }

标签: phplaravel

解决方案


您可以通过检查您的函数是否已存在来绕过此错误:

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)。


推荐阅读