Задать вопрос

Как правильно в Laravel хранить свои собственные контроллеры и функции?

Допустим я хочу сделать некий вспомогательный класс или просто функцию. Например, мне нужна функция обрезки текста до определенного количества слов (для создания превью новостей). В php такой функции нет (есть только обрезка до определенного символа, а мне нужно именно обрезка по словам, чтобы текст не обрывался на середине слова). Я написал такую функцию. И теперь мне бы хотелось, чтобы эту функцию я мог вызывать в любом контроллере, модели и вьюшке. Как мне организовать хранение этой функции? Необходимо создать свой контроллер и в нем прописать статическую функцию, чтобы потом вызывать ее таким образом myclass::myfunction()... ?

Особенно важно, чтобы можно было вызывать ее прямо во вьюшке (пример с обрезкой может не очень хороший, т.к. обрезать лучше в модели, но в некоторых случаях нужно чтобы была возможность вызова непосредственно во вьюшке).

И где вообще в laravel принято хранить такие контроллеры? В той же папке Controllers, создав подпапку?
  • Вопрос задан
  • 2118 просмотров
Подписаться 7 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 4
Denormalization
@Denormalization
Сам Laravel использует для этих целей отдельный файл helpers.php
Ничто не мешает создать свой похожий файл, и добавить его в autoload, тогда все эти функции будут доступны из любого места проекта.
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
То, что вы хотите сделать, не имеет никакого отношения к контроллерам.
Это обычный класс: положите его в корень src или в любую поддиректорию (главное, чтобы namespace был корректный).
Можно создать ServiceProvider, но в данном случае, я думаю, это overkill.
Ответ написан
Комментировать
VGrabko
@VGrabko
Golang, Php, Js
Я к примеру все свои классы храню в vendor дабы их повторно можно было использовать.
Ответ написан
Создай папку Services на верхнем уровне , и там статичные функции прописывай.Вызывать так:ClassName::functionName();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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