Новый DBAL и Mailer

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

  • 00:00:35 - Минорные обновления бэкенда
  • 00:01:53 - Новый вызов в DBAL
  • 00:04:45 - Исправление хэшера
  • 00:05:20 - Изменения работы со схемой БД
  • 00:06:15 - Лучшее отображение ошибок Psalm
  • 00:07:39 - Типы для массивов
  • 00:10:30 - Рекурсивные функции в Psalm
  • 00:12:50 - Полные типы в тестах
  • 00:14:31 - Актуализация валидатора токенов
  • 00:18:47 - Атрибуты для подготовленных выражений
  • 00:22:17 - Обновление фронтенда
  • 00:23:30 - Регистр имён CSS-классов
  • 00:25:20 - Новая нотация функции rgba
  • 00:26:35 - Проверка Cucumber
  • 00:27:40 - Ситуация с текущим мэйлером
  • 00:31:00 - Установка Symfony Mailer
  • 00:34:51 - Отправитель по умолчанию
  • 00:36:59 - Перевод кода на новый Mailer
  • 00:38:07 - Изменение тестов
  • 00:40:15 - Удаление SwiftMailer
  • 00:40:42 - Обзор результата
Скрытый контент (код, слайды, ...) для подписчиков. Открыть →
Дмитрий Елисеев
elisdn.ru
Комментарии (29)
v

👍

Ответить
Максим (@myks92)

Спасибо, Дмитрий) Теперь стало немного понятнее, почему новые скринкасты по 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. Планируется ли данная тема?

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

Ответить
Максим (@myks92)

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

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

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

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

Ответить
Максим (@myks92)

Доброго дня! Приобрёл)

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

Продлил

Ответить
Максим (@myks92)

Благодарю !

Ответить
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 мин в неделю сложно освоить ? ) вы серьезно ? 😟

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

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

Ответить
Максим (@myks92)

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

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

Ответить
slo_nik

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

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

Ответить
slo_nik

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

Ответить
Владимир Перепеченко

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

Ответить
Дмитрий

В заголовке RBAC

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

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

Google
GitHub
Yandex
MailRu