DDD (Domain Driven Design) | Symfony PHP

Поговорим о предметно-ориентированном проектировании (DDD). И на практике рассмотрим как применить данный подход в проекте на фреймворке Symfony.
Уроки, менторство: boosty.to/sashokgorshok
Telegram: ht.me/alejandroyakovlev

Пікірлер: 58

  • @AlejandroYakovlev
    @AlejandroYakovlev5 ай бұрын

    Уроки, менторство boosty.to/sashokgorshok

  • @amori7410
    @amori7410 Жыл бұрын

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

  • @aleksandrkokin6065
    @aleksandrkokin6065 Жыл бұрын

    Спасибо, очень классный контент!

  • @Zlobusz
    @Zlobusz Жыл бұрын

    Привет! Давно ждал продолжение! Очень интересно!

  • @VkusnyashkaMMM
    @VkusnyashkaMMM Жыл бұрын

    Очень хороший контент! Доступно

  • @alexredcross
    @alexredcross Жыл бұрын

    спасибо огромное!!!) продолжайте это благое дело! )

  • @tmdan91
    @tmdan91 Жыл бұрын

    Cаша привет! Спасибо за старания и за подробное объяснение, продолжай делать то что делаешь, у тебя все очень классно получается, жду с нетерпением продолжения курса. До дыр пересмотрел.

  • @cetch001
    @cetch001 Жыл бұрын

    Спасибо за контент!

  • @acerrusm
    @acerrusm Жыл бұрын

    Лучшие уроки по ддд и симфони. Спасибо за труд Алехандро!

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Рад стараться! :)

  • @nastasins
    @nastasins Жыл бұрын

    Зачетный видос!

  • @tatianovnafrutti8982
    @tatianovnafrutti8982 Жыл бұрын

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

  • @VajasanaDas
    @VajasanaDas Жыл бұрын

    Лайк подписка, продолжайте пожалуйста очень ценно

  • @user-kw4kp7eq9m
    @user-kw4kp7eq9m11 ай бұрын

    Большое спасибо!

  • @user-ll8pp6hg3t
    @user-ll8pp6hg3t Жыл бұрын

    Привет, ждем продолжение

  • @tolyankent7982
    @tolyankent7982 Жыл бұрын

    Спасибо!)

  • @alexanderk4481
    @alexanderk4481 Жыл бұрын

    Спасибо )

  • @LeoMrakobes
    @LeoMrakobes9 ай бұрын

    Ніфіга не зрозуміло, але дуууже цікаво!! 😂 навіть після девʼяти попередніх уроків, для мене поточне відео було подібне до "як намалювати сову".... тільки розібрали модуль User, а тут фігак і все готове і розбиратись самому далі треба 😳 Дякую Олександре за найцікавіші і найкорисніші уроки, та схоже мені вони трохи "на виріст", додивлюся останній урок по CI/CD й піду розбиратись із базою Сімфоні

  • @yryskaamanturov500
    @yryskaamanturov500 Жыл бұрын

    Спасибо!

  • @user-go7rv6ve4v
    @user-go7rv6ve4v Жыл бұрын

    Добрый день! Решил как раз посмотреть за симфони, а то лара уже как то скучна стала) И как раз первое, что пришло на мысль это архитектура в симфони и с чего начать) Материал весьма полезный, подача хорошая! Надеюсь будете продолжать вести канал и на это у вас будет свободное время! Очень редко пишу комменты, но тут прям 10 из 10

  • @HEX_CAT
    @HEX_CAT5 ай бұрын

    ❤❤❤🎉🎉🎉

  • @user-gq2zk4lv9z
    @user-gq2zk4lv9z Жыл бұрын

    Как я рад, что ты вернулся! Спасибо за твой труд, очень полезные для меня видео. Я начинаю осваивать симфони, по твоим видео начинаю потихоньку кодить))) Было бы круто, если бы ты смог выпустить пару роликов для совсем чайников, как въехать в симфони, т к много чего еще не доганяю, хоть юзаю гугл и доки.. и было бы оч круто, если бы ты выпустил видео про архитектуру проекта и примеры бест практис, но для совсем зеленых))) что бы все это лучше уложилось в голове. Спасибо!!!

  • @fitter2boss72

    @fitter2boss72

    Жыл бұрын

    Материал "для чайников" пилят все кому не лень, а для мидлов и выше мало кто. Не отвлекайте автора ! :)

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    @@fitter2boss72 😄, я все же думаю позже позаписывать обучающие видео для "чайников", чтобы прокачать свои навыки в плане менторства и донесения мыслей. Всё же мидлы многое на лету умею схватывать и додумывать, так как есть база, а вот заложить базу для начинающего - этому еще нужно поучиться )

  • @fitter2boss72

    @fitter2boss72

    Жыл бұрын

    @@AlejandroYakovlev А вы где-то менторствуете еще ?

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Если только неосознанно :)

  • @user-gq2zk4lv9z

    @user-gq2zk4lv9z

    Жыл бұрын

    @@AlejandroYakovlev спасибо большое, буду ждать!)))

  • @fitter2boss72
    @fitter2boss72 Жыл бұрын

    Еще есть просьба, когда показываете код в Шторме не обрезайте верхушку, в которой видно путь до функции.

  • @ziat1988
    @ziat19888 ай бұрын

    I just found your channel and it covers many topics that i'm searching. Unfortunate for me I don't know Russian. I just hope there are a subtitle for the video.

  • @VajasanaDas
    @VajasanaDas Жыл бұрын

    Спасибо большое, очень ценно. Будет ли продолжение?

  • @MrTheKritik
    @MrTheKritik Жыл бұрын

    Отличное объяснение основ ddd. Жаль видео не было когда я изучал. Зависимость сущностей от каких то сервисов и тп можно наверно завернуть в фабрики. Это я про зависимость от спецификаций

  • @ivan42832
    @ivan42832 Жыл бұрын

    Хороший материал, спасибо! Лично мне не особо нравится прокидывание спецификации через postLoad ну или других сервисов, я сам сталкивался и так делал, костыльное решение, ну еще есть моменты когда ОРМ не позволяет делать красивые настоящие ООП объекты. Я последнее время начал задумываться, вообще при ДДД уходить от энтити менеджера, а сделать сохранение/получение делать агрегатов из БД на DBAL.

  • @nrnwest
    @nrnwest Жыл бұрын

    скажите пажалуйста почему не работает команда make test выдает ошбку нету файла или директории 127. Хотя все файлы на месте. Сборока запус контейра продит все ок, если тесты запускаю в конейнере php bin/phpunit все ок и все команды test: jwt: cache: выдают такую ошибку

  • @WassimBoukadida
    @WassimBoukadida10 ай бұрын

    Hi Is it possible to have a blog post in english ?

  • @AlejandroYakovlev

    @AlejandroYakovlev

    10 ай бұрын

    No :( But you can find the best information in the book "Vaughn Vernon. Domain-Driven Design Distilled". When writing the script for the video, I relied on the content of this book.

  • @fitter2boss72
    @fitter2boss72 Жыл бұрын

    Я как-то потерялся, какова наша предметная область для разрабатываемого Апп? Типа HR компании? (Я конечно извиняюсь за такой тупой вопрос, но большая пауза дает о себе знать. Это идет тотже проект?). Спасибо.

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Я проводил опрос в ТГ канале, где силой большинства было принято решение в рамках урока рассматривать функционал оценки навыков сотрудников. Это что-то из области HR и обучения. Посмотрим, как пойдет дальше. Чтобы не засорять основной репозиторий бизнес логикой, скорее всего буду форкать основную ветвь для различных примеров.

  • @fitter2boss72

    @fitter2boss72

    Жыл бұрын

    @@AlejandroYakovlev Я наверное тоже там за что-то голосовал :) Меня видимо сбило то, что вещи о которых говорится, так же присутствуют в начале разработки (навыки , команда , опыт, инструментарий). Спасибо.

  • @sergeidavidenko8885
    @sergeidavidenko8885 Жыл бұрын

    Привет, спасибо, полезный материал. Понравилось что есть примеры. А то обычно по теме ddd одна вода в виде теории. Но есть некоторые моменты с которыми я не согласен. Мне кажется делать валидацию в самой сущности не очень хорошая идея. Как минимум это нарушает принцип ед. ответственности. А что если потом нужно будет добавить еще какие-либо проверки? а потом еще может добавиться ряд условий, которые определяют нужно ли делать ту или иную проверку? Мне кажется все таки валидацию нужно выносить в отдельный сервис. И не увидел кстати ничего про DTO.

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Спасибо. Конечно, все зависит от ситуации. Слишком тяжелые богатые модели не есть хорошо. Бизнес логику можно вынести в спецификации, чтобы не нарушать принцип единой ответственности. Различные условия можно обыграть через стратегии. Можно и в сервисы на доменном слое. Как только появляется сложность, нужно заниматься рефакторингом в правильном русле. YAGNI. Что бы вы хотели услышать про DTO?

  • @sergeidavidenko8885

    @sergeidavidenko8885

    Жыл бұрын

    @@AlejandroYakovlev про DTO - это же тоже часть ddd, поэтому наверное хотелось бы послушать в каких ситуациях лучше применять, как не переусердствовать чтобы не было слишком большого количества DTO. Например в некоторых проектах которые я встречал всячески стараются избегать работать с сущностями , а стараются работать именно с DTO.

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    @@sergeidavidenko8885 сущности не должны выходить за границы domain и application слоев, это верно. DTO можно использовать для передачи состояния между ограниченными контекстами, для передачи состояния между слоями. Чаще DTO хранится на приклодном слое (например, в CQRS подходе в запросах происходит маппинг сущности). Не думаю, что DTO это часть DDD. Как минимум про DTO ни Вернон, ни Эванс в своих книгах не рассказывают. Да и рассказывать про него особо то нечего :) Это простые структуры, часто иммутабельные, содержат геттеры и сеттеры, методы маппинга и серриализации. Пусть их будет хоть сотни, лишь бы несли свою полезную нагрузку.

  • @user-pd9mn5yf9f
    @user-pd9mn5yf9f Жыл бұрын

    А как сделать админку на DDD? В модуле добавить подмодуль админку? Ведь там используется та же сущность что и на фронт части

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Можно отдельным модулем. Плюсы: низкая связанность, высокое зацепление. Минусы: придется писать больше кода, возможно, с грустью дублировать код в порыве следовать принципам Закона Деметры . Модульный подход поможет впоследствии вынести админку из монолита в отдельную веб службу. Или оставить админку, а все остальное распилить на микрослужбы. Если админкой назвать совокупность модулей, каждый из которых можно представить в виде раздела админки, то контроллеры и представление можно разместить на инфраструктурном слое каждого из модулей. Плюсы: меньше кода (хотите юзать сущности напрямую, без всяких адаптеров и дтошек - пожалуйста) Минусы: модули будут слишком завязаны на представлении, код станет более грязным, хоть и не превратится в большой ком. Еще нужно смотреть какую роль админка занимает в бизнесе, ее стратегическую важность, назначение. Что есть кроме админки и как в будущем это планируется масштабировать. По хорошему админку нужно делать отдельной службой, работающей отдельно от основного приложения и работающей через отдельную схему API (REST, RPC). Если это, например, CRM, ERP, CMS для бизнеса.

  • @user-pd9mn5yf9f

    @user-pd9mn5yf9f

    Жыл бұрын

    ​@@AlejandroYakovlevА как админка может работать отдельным службой, когда используются те же таблицы с теми же данными, которые и в основном приложении. А если же просто делать отдельным модулем (не вынося в отдельную службу), придется скопировать доменные модели в другой модуль, то есть с теми же полями и с теми маппингами и именем таблцы (чтобы иметь возможность работать с той же таблицей и с теми данными, с которой работает и доменная модель в основном приложении)

  • @timur43378

    @timur43378

    10 ай бұрын

    Вопрос некорректен. На DDD делается какая-либо предметная область. Админка - это просто отдельные контроллеры, доступные определенным юзерам. Админка будет использовать тот же "доменный код", что и паблик часть.

  • @user-cs7mb8tn9s
    @user-cs7mb8tn9s Жыл бұрын

    Здравствуйте, Александр. Можно, пожалуйста, ссылки на презентацию и схему из ролика 🙂

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Здравствуйте. Ссылку на презентацию Вы найдете в моем ТГ канале t.me/alexgorshok

  • @user-cs7mb8tn9s

    @user-cs7mb8tn9s

    Жыл бұрын

    @@AlejandroYakovlev спасибо. Нашел там ссылку только на презентацию. Нет ссылки на схему. Или вы не хотите её выкладывать?

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    @@user-cs7mb8tn9s открыть доступ к схеме, к сожалению, не могу. Та как там на одной доске есть приватные данные, не относящиеся к уроку.

  • @optimizeit
    @optimizeit Жыл бұрын

    Жаль больше нет уроков.

  • @user-sf5te2yj8w
    @user-sf5te2yj8w6 ай бұрын

    Классный урок, почему нет новых видео?

  • @AlejandroYakovlev

    @AlejandroYakovlev

    5 ай бұрын

    Скоро будет 💯

  • @imoisey
    @imoisey Жыл бұрын

    Спасибо за видос! Но юзать спецификацию, через которую потом инжектится Repository такое себе решение. Это нарушает изоляцию доменной модели, я бы в таком случае жертвовал инкапсуляцией и выносил бы такую логику в доменный сервис.

  • @AlejandroYakovlev

    @AlejandroYakovlev

    Жыл бұрын

    Вы правы. Это слабое место.

  • @shamanvalius2902
    @shamanvalius29027 ай бұрын

    Едрить сложна. Слоожнаа😮

  • @AlejandroYakovlev

    @AlejandroYakovlev

    7 ай бұрын

    По началу всегда так. Это нормально. Когда спустя время вернешься к этой информации, уже легче восприниматься будет.

  • @Alexander-dg5id
    @Alexander-dg5idАй бұрын

    Модуль !== Ограниченный контекст !== Поддомен. Парень, учи матчасть.

Келесі