如何在 laravel 5 中创建全局帮助程序函数?

2022-08-30 10:47:35

如果我想为一些oauth的东西做一个函数,我正在做,我可以在视图或控制器中使用它(想想rails,你在应用程序控制器中做什么)。currentUser()helper_method: current_user

我读取的所有内容都声明创建一个帮助程序文件夹并在那里添加函数,然后这样您就可以这样做 这是执行此操作的正确方法吗?Helpers::functionName

创建可用于刀片模板和控制器的帮助程序函数的“laravel 方法”是什么?


答案 1

在您的 app/Helpers 目录中创建一个新文件,将其命名为 AnythingHelper.php 我的帮助程序的一个例子是:

<?php
function getDomesticCities()
{
$result = \App\Package::where('type', '=', 'domestic')
    ->groupBy('from_city')
    ->get(['from_city']);

return $result;
}

通过以下命令为帮助程序生成服务提供程序

php artisan make:provider HelperServiceProvider

在新生成的帮助程序服务提供程序的注册函数中.php添加以下代码

require_once app_path('Helpers/AnythingHelper.php');

现在在您的配置/应用程序中.php加载此服务提供商,您就完成了

'App\Providers\HelperServiceProvider',

答案 2

创建全局函数文件的一种简单而有效的方法是直接从 Composer 自动加载它。composer 的自动加载部分接受自动加载的数组。files

  1. 随时随地创建文件。在此示例中,我们将在 内部创建 。functions.phpapp/Helpers

  2. 添加函数,但不添加类或命名空间。

    <?php
    
    function global_function_example($str)
    {
       return 'A Global Function with '. $str;
    }
    
  3. 在该部分内添加以下行:composer.jsonautoload

    "files": ["app/Helpers/functions.php"]
    

    Laravel 5的例子:

    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": ["app/Helpers/functions.php"] // <-- Add this line
    },
    
  4. composer dump-autoload

做!您现在可以访问应用程序的任何部分,包括 Blade 视图。global_function_example('hello world')


推荐