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

Gop*_*osa 7 php helper laravel laravel-5.1

我已经阅读了很多关于如何在Laravel 5.1上制作辅助方法的问题.但我不想在Facade中实现这一目标

HelperClass::methodName();
Run Code Online (Sandbox Code Playgroud)

我想制作一个Helper方法就像这个方法Laravel Helper方法一样:

myCustomMethod();
Run Code Online (Sandbox Code Playgroud)

我不想把它变成门面.这可能吗?怎么样?谢谢.

Ale*_*nin 7

如果你想走“Laravel 方式”,你可以helpers.php使用自定义助手创建文件:

if (! function_exists('myCustomHelper')) {
    function myCustomHelper()
    {
        return 'Hey, it\'s working!';
    }
}
Run Code Online (Sandbox Code Playgroud)

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

"autoload": {
    ....
    "files": [
        "app/someFolder/helpers.php"
    ]
},
Run Code Online (Sandbox Code Playgroud)

运行composer dumpauto命令,你的助手将在所有应用程序中工作,就像 Laravel 的应用程序一样。

如果您想要更多示例,请查看原始 Laravel 助手:/vendor/laravel/framework/Illuminate/Support/helpers.php


Rob*_*sen 6

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

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

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

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

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

'providers' => [
    'App\Providers\HelperServiceProvider',
]
Run Code Online (Sandbox Code Playgroud)

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

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

希望这有效!