Куда записать пользовательские функции в laravel?

Всем добрый день. Куда можно записать свои функции в фреймерворке laravel что бы потом их можно было вызвать из любого файла сайта? Допустим напишу функцию которая будет формировать slug(изменять исходное предложение, и возвращать его транслитом) но это не важно. Так вот, что бы потом я эту функцию мог вызвать допустим из любого контроллера?
  • Вопрос задан
  • 1214 просмотров
Решения вопроса 2
mzcoding
@mzcoding
Web-Разработка
В composer.json чтото типа такого
"autoload": {
   ....
        "files": [
            "app/helpers.php"
        ]
    },

Далее создаете файл helpers.php в app и тулите туда функции
Ответ написан
Комментировать
fomvasss
@fomvasss
PHP developer
Не знаю правильно ли, но я делал следующим образом:
В папке app создал папку Service, в ней соответственно файл SiteService.php:
<?php
namespace App\Services;
class SiteService
{
    public static function formatSlug($slug)
    {
        //...
    }
}


Потом, например, использовал функцию в любом контроллере:
<?php
namespace App\Http\Controllers;
use App\Services\SiteService;
class IndexController extends Controller
{
    public function index()
    {
        return SiteService::formatSlug('My slug');
    }
}


Все отлично работает, но еще раз повторюсь, что я уверен на сколько правильным есть такой подход
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@roodz
1. Задачу транслитерации slug успешно решает стандартный хелпер:
str_slug('мама мыла раму', '-')
вернет
mama-myla-ramu

2. Пользовательские хелперы создаются следующим образом:
в composer.json добавляем секцию
"autoload": {
        "files": [
            "app/Support/helpers.php"
        ],
в app создаем папку Support и добавляем в неё helpers.php
и пишем в неё свои функции-хелперы, например:
if (! function_exists('copyrightYear')) {
    function copyrightYear(int $startYear, string $dash = '–'): string
    {
        return $startYear . ($startYear == ($currentYear=date("Y")) ? '' : $dash . $currentYear);
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы