Как создать вспомогательные методы на Laravel, а не на фасаде

Я прочитал много вопросов о том, как создать вспомогательные методы на Laravel 5.1. Но я не хочу достичь этого на Фасаде

HelperClass::methodName();

Я хочу сделать вспомогательные методы, как на этих методах.

myCustomMethod();

Я не хочу делать это фасадом. Это возможно? Как? Благодарю.

3 ответа

Решение

Если вы хотите пойти по пути Laravel, вы можете создать helpers.php файл с пользовательскими помощниками:

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

Затем поместите этот файл в какой-либо каталог, добавьте этот каталог в раздел автозагрузки приложения. composer.json:

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

Бежать composer dumpauto команда и ваши помощники будут работать через все приложение, как Laravel.

Если вы хотите больше примеров, посмотрите на оригинальных помощников Laravel на /vendor/laravel/framework/Illuminate/Support/helpers.php

Для начала я создал папку в каталоге моего приложения под названием Helpers, Затем в папке "Помощники" я добавил файлы для функций, которые хотел добавить. Наличие папки с несколькими файлами позволяет нам избежать одного большого файла, который становится слишком длинным и неуправляемым.

Затем я создал HelperServiceProvider.php выполнив команду ремесленника:

artisan make:provider HelperServiceProviderВ методе регистрации я добавил этот фрагмент

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

наконец, зарегистрируйте поставщика услуг в вашем config/app.php в массиве провайдеров

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

После этого вам нужно запустить composer dump-autoload и ваши изменения будут видны в Laravel.

теперь любой файл в вашем Helpers каталог загружен и готов к использованию.

Надеюсь, это работает!

Это то, что предлагает JeffreyWay в этом обсуждении Laracasts .

В пределах вашегоapp/Httpкаталог, создайтеhelpers.phpфайл и добавьте свои функции.

В пределахcomposer.json, в блок автозагрузки добавить"files": ["app/Http/helpers.php"]. И беги

      composer dump-autoload.
Другие вопросы по тегам