Laravel 8 Custom Helper function PHP致命错误:无法重新声明以前在C:(path)Helpers.php中声明的functionName() [重复]

Posted

技术标签:

【中文标题】Laravel 8 Custom Helper function PHP致命错误:无法重新声明以前在C:(path)Helpers.php中声明的functionName() [重复]【英文标题】:Laravel 8 Custom Helper function PHP Fatal error: Cannot redeclare functionName() previously declared in C:(patth)Helpers.php [duplicate] 【发布时间】:2021-11-08 17:22:54 【问题描述】:

我在 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.');
        

【问题讨论】:

如果您共享相关代码文件(即函数声明和调用)会有所帮助。 由于第一个和第二个声明在同一个文件/行上,您很可能多次需要/包含文件 Helpers.php 而不是使用 require_once/include_once。 if (!function_exists('CheckInvalidPlan') function CheckInvalidPlan .... 包装你的声明 我已经更新了代码问题。请检查。 你是如何加载帮助文件的?顺便说一句,您应该将其加载到 composer.json 然后转储自动加载 【参考方案1】:

你可以通过检查你的函数是否已经存在来绕过这个错误:

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 文件。它应该由作曲家自动加载,如answer 中所述(感谢 N69S)。

【讨论】:

谢谢大家。使用 if 封装函数。 @Dilhan 很高兴它有效!我看到您是 *** 的新手,如果此问题解决了您的问题,请不要忘记验证答案,以便其他有相同错误的人可以快速找到解决方案。祝你有美好的一天。

以上是关于Laravel 8 Custom Helper function PHP致命错误:无法重新声明以前在C:(path)Helpers.php中声明的functionName() [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel文档阅读笔记-Custom Authentication Login And Registration Using Laravel 8

JQuery Draggable with hover + custom helper 区别(IE vs Chrome)

如何在 Ajax 请求中重定向回 Laravel 8 中的错误

Creating Custom Helper Methods 创建自定义辅助器方法----辅助器方法 ------ 精通ASP.NET MVC 5

lumen可以使用laravel-ide-helper

Laravel 5 IDE Helper 安装