Создание API на Symfony 5: Управление главами книги

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ต.ค. 2024
  • В этом ролике мы начнем предоставлять автору возможность создавать контент и конкретно - главы, разделы и подразделы книги. Из интересного посмотрим как реализовывать сортировку учитывая вложенность дерева.
    Github: github.com/ns3...
    Yandex Zen: zen.yandex.ru/...
    TH-cam: / @eazy-dev
    Telegram: t.me/eazydev_y...
    VK: eazydevru
    Rutube: rutube.ru/chan...
    PHP assert: www.php.net/ma...
    Symfony custom constraint: symfony.com/do...
    Materialized path: habr.com/ru/co...
    Closure table - fueled.com/the...
    Nestedset - en.wikipedia.o...
    Doctrine extensions - github.com/doc...
    How to dynamically validate some data with Symfony Validator - jolicode.com/b...

ความคิดเห็น • 8

  • @solvex8304
    @solvex8304 ปีที่แล้ว +2

    Спасибо! Хорошо бы ещё видео по обновлению с 5 на 6 версию Симфони.

    • @eazy-dev
      @eazy-dev  ปีที่แล้ว +2

      Скоро будет

    • @bootta
      @bootta ปีที่แล้ว

      Вот-тут есть: th-cam.com/video/DsOJFsNsZf8/w-d-xo.html

    • @eazy-dev
      @eazy-dev  ปีที่แล้ว

      Если бы все было так просто)

    • @bootta
      @bootta ปีที่แล้ว +1

      @@eazy-dev у вас очень интересные и подробные видео. По этому уверен что получится классный и интересный контент. Так что ждём ваше видео!)

  • @vladimirovii
    @vladimirovii ปีที่แล้ว

    Спасибо за контент.
    По вопросу деревьев. Единственный аргумент в пользу того что ты паписал свой код по работе с деревьями это "так будет проще", но простоты я не увидел....
    Ты приводишь в ссылках библиотеку для решения этой задачи, но почему то не используешь ее.
    Почему не использовать Nestedset? из Doctrine extensions и ролик можно было бы сократить в половину. Еще раз спасибо, от души)

    • @eazy-dev
      @eazy-dev  ปีที่แล้ว +2

      Ну давай по пунктам. Если я вдруг оговорился и сказал в ролике sortable, то я имел в виду конечно же tree - github.com/doctrine-extensions/DoctrineExtensions/tree/main/src/Tree
      Почему не doctrine extensions и почему не nestedset? Как человек однажды его заюзавший отвечу так:
      - Каждая библиотека - это потенциальный багаж за которым придется следить (обновлять как минимум), ждать пока его допилят под новые версии доктрины, ждать пока пофисят баги и секурити и даже если пофиксишь сам - ждать пока вольют и релизнут, живя на самопальных патчах.
      - Нельзя просто подключить tree, ты должен притянуть весь doctrine-extensions.
      - Казалось бы, ну и что? Ну подключи, пусть оно там само все делает. Но оно всего не делает :-)
      - github.com/doctrine-extensions/DoctrineExtensions/issues/2087 - вот наш старый issue о том, что деревья не работают с second-level кэшом. Сюрприз, они все еще не работают судя по коду :-)
      - Можешь себе представить, что будешь делать, если словишь такой баг или другой какой нибудь? Ты почитай этот чудный код - github.com/doctrine-extensions/DoctrineExtensions/blob/main/src/Tree/Strategy/ORM/Nested.php на 750 строчек :-)
      - Ладно, а почему бы не использовть тогда тот же Tree и не взять materialized path? Я почему то уверен, что у него тоже проблема с кэшом, но помимо этого есть и еще 1 проблема.
      - Если мы посмотрим, как он написан, то он использует LIKE. А если я хочу использовать расширение постгреса, то что мне делать? )
      В ролике, мне нужна сортировка для одного мааааленького кейса.
      Хочу - кэширую, хочу - добавлю новое поле materialized path постгресовый. Реализация простейшая, без root_id, без left, без right. Репозиторий без NestedTreeRepository.
      Имею полнейший контроль над реализацией. Захочу - в любой момент могу заменить на doctrine extensions если это понадобится.
      За это я заплачу своим временем и решение будет не универсальное. Но нужно ли мне универсальное, учитывая то, что я написал выше и простоту задачи - не думаю.
      Я не отговариваю использовать doctrine extensions и писать все самому)) Просто в моей системе ценностей, я лучше буду иметь отдельный слаггер и дерево, которые будут работать на уровне сервисов и это будет простым, что соответствует задаче.

    • @vladimirovii
      @vladimirovii ปีที่แล้ว

      @@eazy-dev спасибо за развернутый ответ, за аргументацию.
      И да код на 750 строк действительно чудный😊