Laravel 8 自定义助手函数 PHP 致命错误: 无法重新声明 functionName(),该函数已经在 C:(patth)Helpers.php 中声明过了。

7 浏览
0 Comments

Laravel 8 自定义助手函数 PHP 致命错误: 无法重新声明 functionName(),该函数已经在 C:(patth)Helpers.php 中声明过了。

这个问题已经有了答案:

如何在Laravel中创建自定义帮助函数

我在App\\Helpers.php中有一个自定义函数。当我在Blade文件中的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;
    }
}

这是我在控制器中的if语句。

if (CheckInvalidPlan ($request->plan_id))
        {
            return back()->with('invalid', 'Invalid membership plan spesified.');
        }

admin 更改状态以发布 2023年5月22日
0
0 Comments

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

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 文件不应该手动 require。它应该被 composer 自动载入,如这个 答案 所解释的(感谢 N69S)。

0