Pipelines в Laravel. Для тех кто не знал.

Поделиться
HTML-код
  • Опубликовано: 21 окт 2024
  • Для тех, кто не знал. Как использовать pipeline для реализации фильтров в проектах на Laravel.
    #Pipelines#laravel#cutcode
    ---------------------------------------------------------------------------------
    ❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - t.me/laravel_chat
    🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - cutcode.ru/cha...
    ---------------------------------------------------------------------------------
    ⏰ Таймкоды:
    0000 Введение
    0033 Обзор проекта
    0204 Документация о pipelines
    0433 Реализация фильтра с pipeline
    0842 Проверка работы и подведение итогов
    Всех поклонников Laravel я приветствую на канале CutCode! Сегодня у нас снова рубрика "для тех кто не знал", в которые будут давать небольшие советы либо демонстрировать фичи из мира laravel, livewire и так далее кто-то мог о них не знать, а кому-то они надеюсь даже пригодятся! Не забудьте об этом поделиться в комментариях и обязательно прожать лайк - я буду крайне благодарен! А мы начинаем погнали!
    Друзья сегодня мы разберемся с вами с пайплайнами, пайпами. Вы меня об этом уже просили, но я успешно об этом забыл. Но в последнем ролике из рубрики "плохой, хороший код" я получил плохую оценку от одного из комментаторов, но ему все равно спасибо за то что напомнил про пайпы. И сейчас мы последуем его совету и переделаем наш подход с фильтрами в сторону пайплайнов. На мой взгляд в данном случае польза это нам не даст и в конце я объясню почему, но в целом это хороший пример. Те кто не понимают о каких фильтрах идёт речь советую посмотреть рубрику "плохой, хороший код" о фильтрах и вернуться назад. Но бегло я и сейчас расскажу что у нас было. Итак есть у нас фильтры их много все они реализованы через отдельные классы. Давайте откроем код - которые у нас подключаются в сервис провайдере. А далее в скопе у модели мы их все перебираем и применяем тем самым трансформируем наш queryBuilder, добавляя необходимые запросы. Вот так просто через foreach и здесь в целом мы можем переделать этот foreach с трансформацией запросов через пайпы. Для начала давайте поговорим что такое pipelines и почему у большинства с ними проблемы? Здесь все просто и если мы уйдем в документацию и поищем pipelines то мы толком ничего не найдем. Давайте попробуем - итак мы видим что есть методы, связанные с пайпами в рамках коллекций и строк, но также знаем что это всего лишь обвертки, как тот же мэп или фильтр что просто обвертка над нативным array map либо array фильтр и все это с fluent интерфейсом исключительно для нашего с вами удобства. Получается что в итоге мы все равно не понимаем что такое пайпы и чтобы понять нам необходимо заглянуть в другой раздел документации а именно api documentation здесь описан весь интерфейс фреймворка и думаю после того как новичок сюда заглянет он сразу же и сбежит. Понять что здесь происходит не так просто. Но давайте попробуем и поищем пайпы здесь вот похожий на pipelines класс. Да друзья это необходимый нам класс для реализации пайплайна. Проходясь по его методам мы находим здесь метод Send, необходимый для отправки объекта через pipeline и метод true с указанием всех пайпов через которые пройдет этот объект.
    ---------------------------------------------------------------------------------
    📹 делитесь этим видео с друзьями:
    • Pipelines в Laravel. Д...
    🔔 подпишитесь на RUclips-канал: www.youtube.co...
    📼 Курс по Laravel с нуля:
    • Курс по Laravel 8 обуч...
    Pipelines в Laravel. Для тех кто не знал.
    ---------------------------------------------------------------------------------
    🔗 наш сайт: cutcode.ru/
    📱 Наш telegram-канал: t.me/laravel_c...

Комментарии • 52

  • @ДарьяШу-п7щ
    @ДарьяШу-п7щ 2 года назад +7

    Вижу cutcode, ставлю лайк не глядя 👍
    Спасибо

  • @MrFlip-fu2py
    @MrFlip-fu2py 2 года назад +5

    Спасибо, познавательно :) 👍

  • @RuslanMavlyanov
    @RuslanMavlyanov 3 месяца назад +1

    Да, наглядность получившегося кода - хуже, чем foreach, согласен. Но я просто обожаю такие красивые лаконичные решения :)
    Боюсь что не смогу удержаться от использования Пайплайна.
    Спасибо брат ты красавчик! Лучи добра тебе

  • @RuslanMavlyanov
    @RuslanMavlyanov 3 месяца назад +2

    Дык это же паттерн Chain of Responsibility (Цепочка обязанностей) походу! На рефакторинг.гуру есть пример.
    А так то спасибо за краткое хорошее овервью

  • @MrDmistas
    @MrDmistas 2 года назад +1

    Супер! Мне очень понравилось то видео про рефакторинг фильтров, а про пайпы я и не знал, спасибо!

  • @ivan_adamovich
    @ivan_adamovich 2 года назад +1

    Спасибо за полезный урок) Радует что у вас растет уровня и качество контента.

    • @CutCodeRu
      @CutCodeRu  2 года назад

      Стараемся по полной)

  • @manzadey
    @manzadey 2 года назад +11

    Спасибо что уделили внимание моему комментарию :) Очень приятно :) Видео познавательное и интересное, но все равно мне показалось мало информации о пайпах: где и почему используются в ларе. Если кому-то интересно почитать доступную статью с примерами на данную тему, почитайте у demiart статью, там три части. Благодаря ей я узнал о что такое пайпы и с чем их едят)
    Ну и комментарий о том, что другой, не очень опытный, программист не поймёт что это и как это работает - притянуто за уши. Эта тему очень довольно просто доступно объяснить, а уж загуглить тем более)

    • @CutCodeRu
      @CutCodeRu  2 года назад +2

      у каждого своё мнение

    • @manzadey
      @manzadey 2 года назад

      @@CutCodeRu никто этого не отрицал. Для этого и созданы комментарии )

    • @RuslanMavlyanov
      @RuslanMavlyanov 3 месяца назад

      Не поймёт! Я джунам объяснял - и было им тяжко.
      Это уже скорее мидловская тема

  • @smiley2827
    @smiley2827 2 года назад +1

    It's like a decorator and the same style is used in Laravel middleware. And of course, your last comment was on point, it's not that readable. But still thank you, cause it was a good example.

  • @rpy6ocTb
    @rpy6ocTb 2 года назад +6

    Пока не понял его пользы, но за труд спасибо!

    • @CutCodeRu
      @CutCodeRu  2 года назад +1

      Еще много раз к ним вернемся

    • @АндрейОринин-б2э
      @АндрейОринин-б2э 2 года назад +5

      Автор верно сказал что, в данном случае профита нет.
      В одном из проектов мне довелось очень удачно ввести пайплайн для сложной проверки оформления заказа. Так как в проекте используется rest api, данные с фронта необходимо перепроверить. Первым этапом проверяем товары из корзины: цены, кол-во. Затем проверяем акционные товары, так же на цены, на то, могут ли товары из разных акций совмещаться между собой. Затем мы проверяем ранее проверенные товары на зоны доставки, входят они или нет, автоматически определяем филиал и стоимость доставки. Далее подарочные товары. И в целом так далее.
      Вот мы и приходим к пайпу. Берем заказ, поочередно проверяем его, каждый класс - ответственен за свою логику. И самое важное, что бы мне в будущем добавить какую либо новую проверку, достаточно создать класс и передать его в пайплайн

    • @CutCodeRu
      @CutCodeRu  2 года назад +4

      @@АндрейОринин-б2э да с процессами обработки заказа отличный пример, ну и мидлвары также работают через пайплайн

    • @twentxx
      @twentxx 2 года назад +1

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

  • @gamingplay5415
    @gamingplay5415 2 года назад +2

    как всегда лайк 🙂 Автору большое спасибо за ваши труды, очень интересно смотреть 🙂😃

  • @МихаилКрамер-н7ш
    @МихаилКрамер-н7ш 2 года назад +3

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

  • @Al_Bel
    @Al_Bel Год назад +1

    Про статистику: И 50% кто подписан не смотрят) Спасибо за труды!

    • @CutCodeRu
      @CutCodeRu  Год назад

      Вот хулиганы)

  • @mnogokotin
    @mnogokotin 2 года назад +2

    спасибо за видос )

  • @TheRedesc
    @TheRedesc 2 года назад +5

    Наверное стоило упомянуть о паттерне цепочка ответственности, по сути пайплайн реализация этого паттерна, но с небольшими наворотами.

    • @alexstav3457
      @alexstav3457 2 года назад +1

      тоже думал что к этому сведет Данил в итоге..

    • @CutCodeRu
      @CutCodeRu  2 года назад

      Не было такой цели)

    • @0kkama
      @0kkama 3 месяца назад

      @@CutCodeRu а зря. Если ознакомится с этим паттенрном, то и пайплайны станут понятнее и с мидлварами тоже проще будет.

  • @АлександрТумандеев-ц3у
    @АлександрТумандеев-ц3у 7 месяцев назад +1

    Вау) это очень круто)

    • @CutCodeRu
      @CutCodeRu  7 месяцев назад

      У нас на канале много всего интересного!

  • @0kkama
    @0kkama 3 месяца назад

    можно фильтрацию просто через цепочку обязанностей сделать, а можно еще через декорацию. У каждого варианта свои +/-

  • @toxageek
    @toxageek 2 года назад

    Классное видео. А в handle при применении apply не надо получать ответ чтобы дальше его пробросить?

  • @YaroslavlCity
    @YaroslavlCity 2 года назад +1

    Может выгода этого подхода и не велика, но для расширения сознания нужно попробовать.

  • @eb6006
    @eb6006 Год назад

    Интересно, а pipline которые сам фреймворк использует это те-же piplines что в видео рассматривают?

  • @eugeney627
    @eugeney627 2 года назад +1

    Добрый день. Подскажите, пожалуйста, будет ли туториал по написанию полноценного функционала данной (или похожей) фильтрации у Вас на канале? Спасибо.

    • @CutCodeRu
      @CutCodeRu  2 года назад

      Добрый, будет огромный курс, где мы рассмотрим фильтры и многое другое

  • @ДенисКуликов-м3о
    @ДенисКуликов-м3о 2 года назад +3

    Самой простой пример pipline это Gulp

  • @taraswww777
    @taraswww777 2 года назад +2

    Пусть просвящаются)

  • @modestusmunh93
    @modestusmunh93 2 года назад

    Не понял, изменили нижнюю границу диапазона стоимости с 0 до 400, и не нашлось ни одного результата, но до применения фильтра полным полно терапевтов со стоимостью выше 400.
    Объясните, пожалуйста.

    • @CutCodeRu
      @CutCodeRu  2 года назад

      Там не только фильтр с ценой применяется

    • @modestusmunh93
      @modestusmunh93 2 года назад +1

      @@CutCodeRu стоят какие-то дефолтные галочки/ползунки, которые не применяются при загрузке страницы?

  • @ktotut5378
    @ktotut5378 2 года назад +1

    Стек не офигеет от таких пайплайнов?

    • @МихаилКрамер-н7ш
      @МихаилКрамер-н7ш 2 года назад

      На какой-то цифре наверняка. Но она, думаю, достаточно большая. Middleware под капотом как раз через пайпы работают.

    • @ktotut5378
      @ktotut5378 2 года назад

      @@МихаилКрамер-н7ш, мидлваров там не так много, все-таки. А здесь есть ощущение, что можно доиграться.

    • @CutCodeRu
      @CutCodeRu  2 года назад

      Мидлваров может быть сколько угодно, их и по умолчанию больше чем фильтров а фильтры сами дополняют query builder условиями, строят sql запрос и в процессе никакой нагрузки нет
      Не верьте ощущением, доверяй фактам

    • @МихаилКрамер-н7ш
      @МихаилКрамер-н7ш 2 года назад

      @@CutCodeRu Ну если бы фильтров реально было много, всё равно бы стек перегрузился... Можно, в принципе, эксперимент поставить, но тут наполнение стека - как при достаточно глубокой рекурсии, можно даже сказать, что в каком-то смысле она и есть. Этими $next мы всё глубже и глубже уходим. Пых просто способен достаточно глубоко уходить. Но учитывать это надо

    • @CutCodeRu
      @CutCodeRu  2 года назад

      @@МихаилКрамер-н7ш учитывать надо все

  • @mirokko
    @mirokko 2 года назад +3

    Пример о трубах на дороге вообще плохой. уж лучше конвейер на заводе привести.

    • @CutCodeRu
      @CutCodeRu  2 года назад +1

      Ну на мой взгляд отличный пример, поэтому его и использовал)

  • @MrFlip-fu2py
    @MrFlip-fu2py 2 года назад +2

    Спасибо, познавательно :) 👍