How to create Helper Methods on Laravel not a Faca

2019-01-02 21:34发布

问题:

I've read a lot of questions of how to make a helper methods on Laravel 5.1. But I dont want to achieve this in a Facade

HelperClass::methodName();

I want to make a Helper Methods just like on this methods Laravel Helper Methods like:

myCustomMethod();

I dont want to make it a Facade. Is this possible? How? Thanks.

回答1:

If you want to go the 'Laravel way', you can create helpers.php file with custom helpers:

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

Then put this file in some directory, add this directory to autoload section of an app's composer.json:

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

Run composer dumpauto command and your helpers will work through all the app, like Laravel ones.

If you want more examples, look at original Laravel helpers at /vendor/laravel/framework/Illuminate/Support/helpers.php



回答2:

To start off I created a folder in my app directory called Helpers. Then within the Helpers folder I added files for functions I wanted to add. Having a folder with multiple files allows us to avoid one big file that gets too long and unmanageable.

Next I created a HelperServiceProvider.php by running the artisan command:

artisan make:provider HelperServiceProvider Within the register method I added this snippet

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

lastly register the service provider in your config/app.php in the providers array

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

After that you need to run composer dump-autoload and your changes will be visible in Laravel.

now any file in your Helpers directory is loaded, and ready for use.

Hope this works!



标签: