10

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

HelperClass::methodName();

I want to make helper methods just like on these methods Laravel Helper Methods like:

myCustomMethod();

I don't want to make it a Facade. Is this possible? How?

Karl Hill
  • 12,937
  • 5
  • 58
  • 95
Goper Leo Zosa
  • 1,185
  • 3
  • 15
  • 33

3 Answers3

7

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

Alexey Mezenin
  • 158,981
  • 26
  • 290
  • 279
6

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!

Robin Dirksen
  • 3,322
  • 25
  • 40
0

This is what is suggested by JeffreyWay in this Laracasts Discussion.

Within your app/Http directory, create a helpers.php file and add your functions.

Within composer.json, in the autoload block, add "files": ["app/Http/helpers.php"]. And run

composer dump-autoload.
Sanjay Goswami
  • 822
  • 1
  • 16
  • 36