Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create Helper Methods on Laravel not a Facade

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?

like image 978
Goper Leo Zosa Avatar asked May 20 '16 06:05

Goper Leo Zosa


2 Answers

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!

like image 130
Robin Dirksen Avatar answered Oct 14 '22 06:10

Robin Dirksen


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

like image 26
Alexey Mezenin Avatar answered Oct 14 '22 08:10

Alexey Mezenin