如何在 Laravel 而不是 Facade 上创建辅助方法

How to create Helper Methods on Laravel not a Facade

我在 Laravel 5.1 中阅读了很多关于如何制作辅助方法的问题。但我不想通过 Facade 来实现。

HelperClass::methodName();

我想像这些方法一样制作辅助方法 Laravel Helper Methods 比如:

myCustomMethod();

我不想把它变成门面。这可能吗?如何?

如果您想进入 'Laravel way',您可以使用自定义助手创建 helpers.php 文件:

if (! function_exists('myCustomHelper')) {
    function myCustomHelper()
    {
        return 'Hey, it\'s working!';
    }
}

然后将这个文件放在某个目录中,将这个目录添加到应用程序的自动加载部分 composer.json:

"autoload": {
    ....
    "files": [
        "app/someFolder/helpers.php"
    ]
},

运行 composer dumpauto 命令和您的助手将在所有应用程序中工作,例如 Laravel 那些。

如果您需要更多示例,请查看 /vendor/laravel/framework/Illuminate/Support/helpers.php

中的原始 Laravel 帮助程序

首先,我在我的应用程序目录中创建了一个名为 Helpers 的文件夹。然后在 Helpers 文件夹中,我为我想要添加的功能添加了文件。拥有一个包含多个文件的文件夹可以让我们避免一个大文件变得太长且难以管理。

接下来,我通过 运行ning artisan 命令创建了一个 HelperServiceProvider.php

artisan make:provider HelperServiceProvider 在注册方法中,我添加了这个片段

public function register()
{
    foreach (glob(app_path().'/Helpers/*.php') as $filename){
        require_once($filename);
    }
}

最后在你的 config/app.php 的 providers 数组中注册服务提供者

'providers' => [
    'App\Providers\HelperServiceProvider',
]

之后您需要 运行 composer dump-autoload 并且您的更改将在 Laravel 中可见。

现在您 Helpers 目录中的所有文件都已加载,可以使用了。

希望这有效!