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

Поделиться
HTML-код
  • Опубликовано: 4 сен 2022
  • Для тех, кто не знал. Как использовать pipeline для реализации фильтров в проектах на Laravel.
    #Pipelines#laravel#cutcode
    ---------------------------------------------------------------------------------
    ❗️❗️❗️Присоединяйся к нашему комьюнити в телеграм - там и советом помогут и много интересного - t.me/laravel_chat
    🤖🤖🤖Мой помощник Тэйлор готов выдать тебе подарок. Забирать тут - cutcode.ru/chat-bot
    ---------------------------------------------------------------------------------
    ⏰ Таймкоды:
    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-канал: ruclips.net/user/CutCodeRu?s...
    📼 Курс по Laravel с нуля:
    • Курс по Laravel 8 обуч...
    Pipelines в Laravel. Для тех кто не знал.
    ---------------------------------------------------------------------------------
    🔗 наш сайт: cutcode.ru/
    📱 Наш telegram-канал: t.me/laravel_cutcode

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

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

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

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

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

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

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

  • @user-nu2jz1sb4s
    @user-nu2jz1sb4s Год назад +3

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

  • @user-mi2od9gr5x
    @user-mi2od9gr5x Год назад +7

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

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

      Не надо не глядя 👆🏻

  • @smiley2827
    @smiley2827 Год назад +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.

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

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

  • @manzadey
    @manzadey Год назад +11

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

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

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

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

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

    • @RuslanMavlyanov
      @RuslanMavlyanov Месяц назад

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

  • @0kkama
    @0kkama 28 дней назад

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

  • @rpy6ocTb
    @rpy6ocTb Год назад +6

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

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

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

    • @user-er8ii1jj3t
      @user-er8ii1jj3t Год назад +5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @TheRedesc
    @TheRedesc Год назад +5

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

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

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

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

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

    • @0kkama
      @0kkama 28 дней назад

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

  • @user-ox2wd9lb1u
    @user-ox2wd9lb1u 5 месяцев назад +1

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

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

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

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

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

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

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

  • @user-eq5rm5nh4h
    @user-eq5rm5nh4h Год назад +3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • @user-nu2jz1sb4s
      @user-nu2jz1sb4s Год назад

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

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

      @@user-nu2jz1sb4s, мидлваров там не так много, все-таки. А здесь есть ощущение, что можно доиграться.

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

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

    • @user-nu2jz1sb4s
      @user-nu2jz1sb4s Год назад

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

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

      @@user-nu2jz1sb4s учитывать надо все

  • @mirokko
    @mirokko Год назад +3

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

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

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

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

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