Новый DBAL и Mailer

Обновление зависимостей для бэкенда и фронтенда. Нюансы использования нового Doctrine DBAL. Постепенная миграция от SwiftMailer к его современной замене.

  • 00:00:37 - Минорные обновления бэкенда
  • 00:02:02 - Новый вызов в DBAL
  • 00:05:05 - Исправление хэшера
  • 00:05:42 - Изменения работы со схемой БД
  • 00:06:40 - Лучшее отображение ошибок Psalm
  • 00:08:11 - Типы для массивов
  • 00:11:11 - Рекурсивные функции в Psalm
  • 00:13:35 - Полные типы в тестах
  • 00:15:21 - Актуализация валидатора токенов
  • 00:19:57 - Атрибуты для подготовленных выражений
  • 00:23:41 - Обновление фронтенда
  • 00:25:19 - Регистр имён CSS-классов
  • 00:28:02 - Новая нотация функции rgba
  • 00:28:40 - Проверка Cucumber
  • 00:29:53 - Ситуация с текущим мэйлером
  • 00:33:19 - Установка Symfony Mailer
  • 00:37:20 - Отправитель по умолчанию
  • 00:39:36 - Перевод кода на новый Mailer
  • 00:40:48 - Изменение тестов
  • 00:43:04 - Удаление SwiftMailer
  • 00:43:34 - Обзор результата
Скрытый контент
Комментарии (24)
v

👍

Ответить
Максим

Спасибо, Дмитрий) Теперь стало немного понятнее, почему новые скринкасты по Slim немного притормозились. В ожидании ключевых изменений…

Очень интересно было посмотреть как осуществятся переход с одной библиотеки на другую. Однако хотелось бы узнать почему мы не можем пойти дальше и вместо зависимостей на какой-то сторонний Mailer по всему проекту - сделать обёртку в виде своего MailerInterface? Ведь тогда все изменения касались бы одного нашего Mailer. Мы бы просто писали новые обёртки и удаляли их, при необходимости. Например создать общий интерфейс Api\Mailer\MailerInterface и реализовать разные мейлеры: Api\Mailer\SymfonyMailer, Api\Mailer\SwiftMailer, Api\Mailer\LaminasMailer. И если это не имеет смысла то по какому тогда принципу создаёте абстракцию в виде Interface со сторонними библиотеками?

Кроме того, мы же можем отправлять не напрямую, а использовать очереди или писать сообщения сначала в базу. В таком случае это было бы проще решить имея свой App Mailer.

Так же интересно было бы рассмотреть в рамках скринкаста организации уведомлений через разные популярные каналы, в том числе и через email. Планируется ли данная тема?

Спасибо ещё раз!)

Ответить
Дмитрий Елисеев

Сделать обёртку в виде своего MailerInterface?

Да, можно сделать адаптеры для всех библиотек для более удобного и независимого использования, как мы сделали с валидатором. Также можно сделать с переводчиком, мэйлером и шаблонизатором. Тогда переход на другие будет проще. Это имеет смысл для сложных компонентов, которые мы используем часто.

Кроме того, мы же можем отправлять не напрямую, а использовать очереди или писать сообщения сначала в базу. В таком случае это было бы проще решить имея свой App Mailer.

Верно. Если использовать свой интерфейс, то можно подставить потом любую реализацию и как угодно её декорировать. Но даже сейчас при крайней необходимости мы можем это сделать, подменив реализацию для уже используемого оригинального Symfony\MailerInterface, а потом уже перейти на свою абстракцию.

Так же интересно было бы рассмотреть в рамках скринкаста организации уведомлений через разные популярные каналы, в том числе и через email. Планируется ли данная тема?

В будущем мы будем как раз рассылать кучи уведомлений и напоминаний. Тогда вместо простого интерфейса мэйлера мы сделаем целый модуль, отвечающий за централизованную работу с письмами и рассылками.

Ответить
Максим

Спасибо за развёрнутый ответ! Всё понятно. Просто было интересно почему где-то делаете свою абстракцию в виде валидатора, диспетчера событий, а где-то нет.

А вот по модулю отвечающий за рассыпки и уведомления порадовала информация. Думал, что здесь такого не предвидится. Будем с нетерпением ждать!

Ответить
slo_nik

Добрый вечер.

Благодарю, полезная информация.

Вот только не совсем понятно упоминание RBAC. Это опечатка?

Ответить
Дмитрий Елисеев

Опечатка

Ответить
slo_nik

Но всё-равно посмотрел и интересом. Информация в видео подтвердила, что я правильно сделал обновление проекта)

Ответить
slo_nik

Подскажите, а как правильно перевести базу с mysql на postgres?

Есть старый проект, который планирую объединить с новым проектом.

Старый и новый проект схожи по направлению. Планируется сделать управление сайтами в одной админке.

Ответить
Дмитрий Елисеев

Сделать сначала два подключения к двум БД и постепенно переносить сущности из одной в другую.

Ответить
slo_nik

То есть, doctrine подключается к mysql, забирает оттуда записи, заполняется новая сущность (новый сайт) и пишется в postgres?

Ответить
slo_nik

Перед этим добавить в docker сам mysql и через dump перенести в него данные со старого сайта?

Ответить
Дмитрий Елисеев

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

Ответить
slo_nik

Да вроде никаких нет.

Обычный ActiveRecord yii2, в админке create, view, delete. На сайте личный кабинет и поисковые запросы. Часть кода реализовано по Вашему примеру yii2_market. Это на старом сайте. Единственное, что отличается в базе, так это id записей. На старом обычный auto_increment, на новом uuid

Ответить
Arunas

Спасибо :)

Ответить
Руслан

Спасибо!

Ответить
Александр

Здравствуйте Дмитрий, думали ли вы о понижении качества (перезапись и тд) эпизодов, в угоду скорости их выхода ? Хотелось бы побольше материала (:

Ответить
Дмитрий Ориховский

Да, согласен.

Ответить
Максим

Не согласен. И так по сути не всегда успеваешь переварить весь объём, не говоря о том, чтобы применить на практике. Куда ещё больше информации-то) Сейчас как есть норм - сжато и концентрировано.

Ответить
Александр

40 мин в неделю сложно освоить ? ) вы серьезно ? 😟

Ответить
Максим

Не, ну возможно я один такой не поспеваю за программой курса, так как и без того дел хватает и даже того времени на изучение даже меньше, чем хотелось бы)

Ответить
Максим

Качество понижать не нужно, но вот скорость как-то бы увеличить. Плюсую за это. Кто-то усваивает курс быстрее, а кто-то медленнее. И это не курс, а скринкаст!

Не очень понимаю возмущение по скорости. У вас что видео удаляются после выхода следующих?) Тот кто быстро схватывает хочет идти дальше нет необходимости дожидаться всех. Пересматривайте скринкаст хоть через год по 10 раз.

Ответить
slo_nik

А кто Вам мешает двигаться дальше самостоятельно?

Под меткой "Скоро" около двадцати пунктов. Попробуйте самостоятельно реализовать код, потом сравните с тем, как Дмитрий Елисеев это делает.

Ответить
slo_nik

Не нужно понижать качество в угоду скорости.

Ответить
Владимир

Да, тоже умоляю, не нужно понижать качество.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Google
Yandex
MailRu