Сегодняшний ролик будет посвящен контрактам в Ларавел (Laravel Contracts). Изучим что это такое и как их использовать #php#laravel#cutcode --------------------------------------------------------------------------------- ❗️❗️❗️как делать сложные сайты на laravel? Это просто с cutcode! Поддерживай мой проект - Угостить меня кофе - 🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - --------------------------------------------------------------------------------- ⏰ Таймкоды: 00:00 Введение 00:38 Что такое интерфейсы в PHP 01:35 Когда нужно использовать интерфейсы 02:32 Laravel Contracts 03:10 Laravel Contracts в рамках концепции Service Container 03:53 Подведение итогов Всех поклонников Laravel я приветствую на канале Cutcode! И сегодняшний ролик будет посвящен контрактам Laravel: что это такое, как их использовать и в целом концепцию контрактов, так как многие читают документацию, думают что это какой-то отдельный особенный интерфейс, не понимая сути. Но в целом здесь совершенно ничего сложного. Мы немножко отойдем в сторону и поговорим для начала о интерфейсах PHP, для тех кто мало ли не знаком с ними. Что такое вообще в целом интерфейсы? Они никак не связаны с Laravel, они пришли у нас из PHP. Как написано в самой документации интерфейсы объектов позволяют создавать код, который указывает какие методы должен реализовать класс. То есть по факту это и есть природа контрактов как в реальной жизни - то есть если мы посмотрим на интерфейс, скажем например есть MessengerNotificatorInterface у него есть метод send и все классы которые будут реализовать этот интерфейс должны также реализовывать метод send. То есть они как бы подписывают контракт как и люди, на то что обязаны выполнять какие-либо правила и в данном случае реализовывать метод send. У нас сам интерфейс выглядит следующим образом: имеет одну функцию она у нас пустая - просто указано название, какие аргументы и что возвращает и классы которые реализует. Также в документации указано когда нужно использовать интерфейсы, что позволит разработчикам создавать объекты разных классов которые могут использоваться взаимозаменяемо. Как раз то что у нас есть и в примере. У нас есть интерфейс MessengerNotificator уведомлениях и юзерам в какие-либо мессенджеры и 2 класса которые его реализуют, как раз таки они взаимозаменяемы. И как раз уходя уже в Laravel и если вы помните тему сервис-контейнера (на канале есть об этом ролик). То мы можем сделать инъекции в любой контроллер с просто интерфейсом Messenger нотификатор и забиндить в сервис-провайдере что этот интерфейс у нас ссылается на какой либо определенный класс, который его реализуют и работать уже внутри с этим классом. И впоследствии его простым способом заменять на какой-либо другой. Ну либо динамически заменять в процессе. То же самое если мы посмотрим на Laravel контракты, как раз таки, то это не что иное как просто интерфейсы. Просто обычный PHP интерфейс. Просто если исторически отходить назад, когда Laravel только разрабатывался, Тейлор решил называть интерфейс в рамках Laravel фреймворка контрактами, так как это более понятно для человека, как раз как я уже говорил что тот же самый контракт и классы его подписывают, на то что они обязаны реализовывать методы в этом контракте. Вот и все в по сути что касается контрактов - это всего лишь интерфейса. И также они работают в рамках концепции сервис контейнера. Скажем мы здесь можем указать контракт инкриптор - тот самый интерфейс, который мы только что смотрели. И здесь уже по умолчанию в Laravel будет забиндено, что это у нас string инкриптор и здесь мы уже будем работать с классом, который реализовывает интерфейс и который забинден по умолчанию в Laravel на этот интерфейс. То же самое как мы делали в сервис контейнере с нотификаторами - где меняли иногда slug иногда telegram и это нам помогает в разработке приложения в дальнейшем масштабирование приложения, то есть это удобный инструмент. --------------------------------------------------------------------------------- 📹 делитесь этим видео с друзьями: 🔔 подпишитесь на YouTube-канал: 📼 Курс по Laravel с нуля: Laravel Contracts и PHP интерфейсы. Использование в рамках концепции Service Container --------------------------------------------------------------------------------- 🔗 наш сайт: 📷 наш instagram: 📱 Наш telegram-канал:
Hide player controls
Hide resume playing