Как сервис-провайдеры и сервис-контейнеры работают с laravel?

Опубликовано: 2022-09-16

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

Одной из функций являются его поставщики услуг, о которых я дам подробный обзор в этом блоге. В этом блоге я также объясню, как работает сервис-контейнер в laravel.

Это проще, чем вы могли себе представить. Сказав это, давайте прямо к этому.

Что такое поставщики услуг в laravel?

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

Новый призыв к действию

Поставщик для этого примера можно найти в config/app.php в виде массива с именем «поставщики». Обратитесь к изображению ниже:

Что такое поставщики услуг в laravel 1

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

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

Как создать поставщиков услуг в laravel?

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

php artisan make: провайдер MyServiceProvider

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

Как создать поставщиков услуг в laravel 1

После этого откройте свое приложение и перейдите в папку поставщиков, где вы найдете своего поставщика услуг.

Как создать поставщиков услуг в laravel 2

Здесь вы увидите два метода: register() и boot().

Метод регистрации()

Очень важно знать тот факт, что метод register() позволяет нам определять привязки к нашему сервисному контейнеру. Например, см. код ниже:

Метод регистрации

$this->app — это глобальная переменная в laravel, которая может получить доступ к одноэлементному классу через приложение.

Синглтон — это черта. Когда вы применяете эту черту, вы информируете приложение о том, что любой класс, отправленный в качестве параметра в приложении, должен иметь только один дубликат (экземпляр) во всем приложении. Это означает, что MyClass будет разрешен один раз и будет иметь только один экземпляр, доступ к которому можно получить с помощью переменной my_class.

Метод загрузки()

Метод boot() позволяет получить доступ ко всем службам, которые ранее были зарегистрированы с помощью метода register. Таким образом, вы можете включить весь сервис в свое приложение, используя этот метод.

Метод загрузки

Метод загрузки-1

Как зарегистрировать поставщика услуг?

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

Как зарегистрировать поставщика услуг

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

Что такое сервисные контейнеры в laravel?

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

6 принципов разработки современных веб-приложений 2022

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

Как использовать сервисный контейнер в laravel?

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

Как использовать сервисный контейнер в laravel

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

Функция суммы массива вычисляет массив суммы чисел, используя функцию суммы массива, а функция произведения массива умножает все числа, представленные в виде массива.

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

Как использовать сервисный контейнер в laravel-1

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

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

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

Подводя итог

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

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

Когда вы используете сервисный контейнер, вы можете использовать его для внедрения зависимостей (например, внедрения параметров в ваши классы контроллеров), а также классов привязки и разрешения (например, какой класс создавать для данного контракта).

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

Нужна помощь в веб-дизайне и веб-разработке? Свяжись с нами!

Монтажер: Амрута