Advertisement
  1. Code
  2. Laravel 5

Как создать хелпер в Laravel

by
Difficulty:BeginnerLength:LongLanguages:

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

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

Laravel включает в себя множество глобальных «вспомогательных» функций PHP. Многие из этих функций используются самим фреймворком; Однако вы можете использовать их в своих приложениях, если сочтете их удобными.

Итак, в основном, хелперы в Laravel - это встроенные служебные функции, которые вы можете вызывать из любого места вашего приложения. Если бы они не были предоставлены самим фреймворков, вы, возможно, в итоге сами бы создали собственные вспомогательные классы.

Хотя ядро предоставляет множество хелперов, всегда есть шанс, что вам понадобятся ваши собственные, и вы бы хотели их написать, чтобы вам не нужно было дублировать один и тот же код здесь и там, тем самым обеспечивая лучшую поддержку своему приложения. Вы узнаете, как создать пользовательский хелпер Laravel в этом уроке.

Хелперы в Ларавеле

Как мы обсуждали ранее, в основе структуры Laravel имеется множество хелперов. Они группируются в зависимости от функциональности, которую они предоставляют. Вот список вспомогательных групп.

Массивы

Хелперы из этой группы предоставляют функциональные возможности для манипулирования элементами массива. Чаще всего вы находитесь в ситуации, когда вы хотите выполнять разные операции над элементами массива. Таким образом, это место, где вы должны сначала посмотреть, есть ли то, что вы ищете, уже существует.

Пути к папкам и файлам

Я считаю, что хелперы из этой категории наиболее полезные. Они возвращают полностью квалифицированный путь из разных каталогов, таких как app, storage, config и т.п. Бьюсь об заклад, вы уже используете большинство этих хелперов в своем приложении Laravel.

Строки

Обработка строк - это нечто неизбежное в вашей повседневной разработке приложений. Хотя существует множество функций манипуляции строками, предоставляемых самим PHP, в этой группе вы найдете еще несколько полезных.

URL-адрес

В этой категории хелперов очень мало, но они используются во всем приложении. В основном они используются для создания URL-адресов маршрутов, ресурсов и форм.

Разное

Эта категория содержит хелперы, которые предоставляют множество функций: от регистрации до отладки и многие другие.

Для полной справки по хелперам Laravel нет лучшего места, чем официальная документация.

Создайте свой первый пользовательский хелпер

Теперь у вас есть основное понимание хелперов Laravel и для чего они используются. В этом разделе я расскажу, как вы можете создать свой собственный хелпер, который можно использовать глобально в вашем приложении Laravel.

Чтобы все было просто и легко понять, это будет довольно простой хелпер, который принимает идентификатор пользователя и возвращает имя пользователя в качестве ответа. Конечно, звучит не очень интересно, но я считаю, что этого достаточно, чтобы продемонстрировать концепцию, и вы всегда можете расширить ее, чтобы выполнить свои сложные требования.

Я предполагаю, что у вас есть таблица пользователей в вашей базе данных, и у нее есть как минимум два поля: userid и username.

Скелет хелпера Laravel

Прежде чем двигаться вперед и фактически создавать файлы, давайте быстро рассмотрим файлы, которые мы собираемся создать в остальной части статьи.

  • App/Helpers/Envato/User.php: Это наш вспомогательный файл, который содержит логику нашего хелпера.
  • App/Providers/EnvatoServiceProvider.php: это настраиваемый файл поставщика услуг, который загружает наш пользовательский вспомогательный файл.
  • config/app.php: В этом файле мы объявим нашего специализированного поставщика услуг, а также здесь мы  определим псевдоним для нашего хелпера, чтобы нам не пришлось  нашего помощника.
  • routes/web.php: довольно стандартный файл маршрута Laravel, где мы будем тестировать нашего хелпера.

Создание файлов хелпера

Хотя вы можете размещать свои вспомогательные файлы в любом месте приложения, более интуитивно понятный и стандартный способ предполагает, что файлы должны находиться под вашим каталогом app.

Итак, двигаемся дальше, создайте каталог Helpers/Envato в директории app и создайте файл User.php со следующим содержимым. Конечно, вы можете разместить его непосредственно в каталоге app или app/Helpers, но дополнительный уровень вложенности позволяет нам удобно организовать наших хелперов, особенно когда у вас их будет много.

Файл начинается с довольно стандартного объявления пространства имен:

Цель нашего пользовательского хелпера - получить имя пользователя на основе идентификатора пользователя. Следовательно, нам нужно взаимодействовать с базой данных, поэтому мы должны подключить DB Facade.

Для тех, кто не знаком с Laravel Facades, это просто еще один удобный способ доступа к объектам из контейнера. В качестве альтернативы вы могли бы использовать инъекцию зависимостей.

Далее у нас конкретная реализация нашего хелпера. Как вы можете видеть, существует статический метод, определяющий логику извлечения имени пользователя на основе идентификатора пользователя.

Объект $user хранит запись базы данных с соответствующим идентификатором пользователя. Наконец, метод возвращает имя пользователя в качестве ответа в следующем выражении.

Это касается нашего вспомогательного файла.

Теперь мы создали наш вспомогательный файл, но вопрос в том, как вы собираетесь его использовать? Мне приходят два быстрых решения:

  • Вы можете включить наше вспомогательное имя файла в composer.json, чтобы оно автоматически загружалось. Затем вы можете сразу вызвать статический метод нашего вспомогательного класса.
  • Вы можете продолжить и создать поставщика услуг Laravel, который позволит вам зарегистрировать свой собственный вспомогательный файл, чтобы среда Laravel загружала его вместе с другими зависимостями. Зарегистрируйте этого поставщика услуг в конфигурации Laravel и создайте псевдоним для использования вашего хелпера.

Конечно, первый из них довольно быстр и прост в реализации, и у вас может возникнуть соблазн сделать это, но я предпочел бы предложить последний, поскольку он выглядит более ремесленным способом и более удобен в обслуживании.

Перейдите в командную строку и выполните следующую команду в корне приложения, чтобы создать нового поставщика услуг.

Вы должны увидеть сообщение, подтверждающее, что поставщик успешно был создан в каталоге app/Providers.

Откройте этот файл, и вы уже должны увидеть два метода. Важным в контексте этой статьи является метод register. Да, на данный момент он пуст, так что надо будет немного потрудиться, чтобы сделать его более полезным.

Метод register используется для регистрации ваших зависимостей, и мы это точно сделали. Мы включили наш пользовательский вспомогательный файл.

Вот как должен выглядеть файл app/Providers/EnvatoServiceProvider.php после внесенных изменений.

Так что пока все хорошо. У нас есть наш пользовательский хелпер и поставщик услуг для него.

Затем нам нужно сообщить Laravel о нашем поставщике услуг, чтобы он мог загрузить его во время начальной загрузки. Давайте откроем файл config/app.php и добавим следующую запись в массив providers в конце.

Чтобы использовать наш хелпер удобным способом, мы могли бы создать псевдоним. Итак, давайте сделаем это, добавив следующую запись в массив aliases в конце в том же файле.

Определив эту запись, мы можем вызвать наш хелпер, используя ключевое слово EnvatoUser. Довольно удобно, не правда ли? Для справки, вот полный файл config/app.php.

Мы почти сделали это! Мы сделали всю тяжелую работу, чтобы добраться до этого места, и теперь мы можем воспользоваться преимуществами нашего специального хелпера.

Ваш первый пользовательский хелпер в действии

Опять же, чтобы все было просто и понятно, мы определим базовый маршрут Laravel и вызовем наш хелпер!

Идем дальше и создаем файл route/web.php со следующим содержимым.

Это вообще нуждается в объяснении? Мы только что вызвали пользовательский помощник по сокращению EnvatoUser::get_username, и он должен вернуть имя пользователя.

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

На этом наша история заканчивается сегодня.

Вывод

Хелперы в Laravel - действительно мощная функция, и я уверен, что в качестве разработчика вы бы хотели дальше развить эту тему. И это была тема сегодняшнего дня - мы рассмотрели основы файловой структуры хелпера Laravel и создали полезный пользовательский хелпер.

Надеюсь, вам понравилась статья, и она поможет вам создавать собственные пользовательские хелперы в повседневной разработке приложений Laravel.

Не стесняйтесь оставлять свои комментарии и запросы в ленте ниже. Я также комментирую мой Twitter и отвечаю на них, как только могу!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.