Как сервис-провайдеры и сервис-контейнеры работают с laravel?
Опубликовано: 2022-09-16Иногда даже опытным разработчикам может быть очень сложно работать с Laravel, поскольку основные функции сложны для понимания. Но действительно, веб-разработка — это интересно.
Одной из функций являются его поставщики услуг, о которых я дам подробный обзор в этом блоге. В этом блоге я также объясню, как работает сервис-контейнер в laravel.
Это проще, чем вы могли себе представить. Сказав это, давайте прямо к этому.
Что такое поставщики услуг в laravel?
Поставщики услуг в приложении Laravel служат основной точкой, из которой загружается приложение. В результате провайдеры используются для внедрения базовых сервисов laravel в контейнер сервисов, а также сервисов нашего приложения, классов и их зависимостей в контейнер сервисов.
Поставщик для этого примера можно найти в config/app.php в виде массива с именем «поставщики». Обратитесь к изображению ниже:
Предположим, вы хотите использовать какой-либо сторонний поставщик услуг, тогда вы должны применить его в конфигурации массива поставщиков услуг.
Вы можете увидеть, что некоторые поставщики услуг уже запускают все приложение, например, Auth, которое требуется для аутентификации приложения.
Как создать поставщиков услуг в laravel?
Чтобы использовать поставщика услуг, его необходимо сначала создать. В результате мы настроим поставщика услуг прямо сейчас. Вы можете использовать приведенную ниже команду для создания любого поставщика услуг, который вам нужен.
php artisan make: провайдер MyServiceProvider
Когда вы запустите команду, в вашем приложении будет создан поставщик услуг, который вы затем сможете использовать.
После этого откройте свое приложение и перейдите в папку поставщиков, где вы найдете своего поставщика услуг.
Здесь вы увидите два метода: register() и boot().
Метод регистрации()
Очень важно знать тот факт, что метод register() позволяет нам определять привязки к нашему сервисному контейнеру. Например, см. код ниже:
$this->app — это глобальная переменная в laravel, которая может получить доступ к одноэлементному классу через приложение.
Синглтон — это черта. Когда вы применяете эту черту, вы информируете приложение о том, что любой класс, отправленный в качестве параметра в приложении, должен иметь только один дубликат (экземпляр) во всем приложении. Это означает, что MyClass будет разрешен один раз и будет иметь только один экземпляр, доступ к которому можно получить с помощью переменной my_class.
Метод загрузки()
Метод boot() позволяет получить доступ ко всем службам, которые ранее были зарегистрированы с помощью метода register. Таким образом, вы можете включить весь сервис в свое приложение, используя этот метод.
Как зарегистрировать поставщика услуг?
Поскольку вы создали поставщика услуг, вам необходимо зарегистрировать его в файле конфигурации, чтобы завершить процесс. Вы должны зарегистрироваться здесь в порядке, изображенном на изображении ниже:

Все поставщики услуг будут загружаться первыми при каждом запуске приложения. Поставщики услуг — это центральное место для приложений Laravel, и они всегда рядом, чтобы помочь вам запустить полное приложение, как обсуждалось ранее в этом блоге.
Что такое сервисные контейнеры в laravel?
Сервисный контейнер — это мощный механизм, который позволяет нам хранить все привязки, необходимые для выполнения приложения Laravel, на одном сервере.
Все в приложении может быть связано вместе с помощью сервисного контейнера.
Как использовать сервисный контейнер в laravel?
Рассмотрим следующий сценарий: у нас есть класс с именем MathService, который отвечает за выполнение определенных фундаментальных операций, таких как сложение, умножение и т. д. Код для этого класса приведен ниже.
Как вы можете видеть выше, существует два метода вычисления массива суммы чисел с использованием функции суммы массива и умножения всех чисел, представленных в виде массива, с помощью функции произведения массива.
Функция суммы массива вычисляет массив суммы чисел, используя функцию суммы массива, а функция произведения массива умножает все числа, представленные в виде массива.
Чтобы использовать поставщика услуг, мы должны сначала привязать службу к контейнеру службы.
Однако тем самым мы указываем Laravel хранить контейнер MathService в контейнере с именем MathService и возвращать его всякий раз, когда нам требуется экземпляр класса. Это одноразовая привязка класса, и ее можно использовать для получения любого количества экземпляров из нашей программы.
Как указывалось ранее, сервисные контейнеры и провайдеры являются критически важными компонентами каждого приложения Laravel. Как указывалось ранее, мы можем создавать собственных уникальных поставщиков услуг или включать в свои приложения сторонних поставщиков услуг.
Например, если вы хотите использовать socialite в Laravel, вы можете просто скопировать и вставить его в файл поставщика службы приложений и использовать в любом месте вашего приложения.
Подводя итог
При настройке приложения используются поставщики услуг. В дополнение к привязкам сервисного контейнера в этом разделе файла конфигурации также регистрируются другие ключевые элементы, такие как маршруты, промежуточное ПО и прослушиватели событий.
Поставщики услуг выполняются до обработки самого запроса, гарантируя, что все, что вам нужно, находится на месте и настроено до того, как запрос будет обработан системой. Выполнение некоторых поставщиков услуг происходит на регулярной основе, в то время как другие поставщики услуг выполняются только тогда, когда они требуются («отложенные поставщики»).
Когда вы используете сервисный контейнер, вы можете использовать его для внедрения зависимостей (например, внедрения параметров в ваши классы контроллеров), а также классов привязки и разрешения (например, какой класс создавать для данного контракта).
Веб-разработка может быть сложным процессом. Вот почему у webdew есть команда опытных веб-разработчиков, которые помогают создавать веб-сайты и приложения и облегчают вам жизнь.
Нужна помощь в веб-дизайне и веб-разработке? Свяжись с нами!
Монтажер: Амрута