Swiftmailer умер, да здравствует Symfony Mailer!
Это перевод статьи из блога Symfony: https://symfony.com/blog/the-end-of-swiftmailer
Начиная с Symfony 4.3 (май 2019) у нас появился новый компонент Symfony Mailer. С каждым релизом он наращивал функцинальность, добавляя больше сторонних поставщиков и некоторые недостающие функции, которые уже были доступны в старом Swiftmailer, например, поддержку DKIM и электронные подписи.
Начиная с версии Symfony 5.3 можно сказать, что все функции Swiftmailer теперь доступны и в Symfony Mailer.
Пришло время официально прекратить поддержку Swiftmailer в пользу Symfony Mailer. Дату окончания поддержки Swiftmailer - конец ноября 2021 года, т.е. одновременно с выпуском Symfony 5.4 LTS и 6.0.
На самом деле новый компонент Symfony Mailer мог бы выйти под названием Swiftmailer 7. Давайте немного погрузимся в то, как я решил создать Symfony Mailer вместо выпуска Swiftmailer 7. Текущая кодовая база для Swiftmailer была основана Swiftmailer 4.0, который вышел примерно во времена Symfony 1.2 (декабрь 2008)!
В течение многих лет я пытался поэтапно модернизировать Swiftmailer, вводя пространства имен, переходя к автозагрузчику Composer, удаляя специальную (и тяжелую) «последовательность загрузки», пытаясь перейти на DI и диспетчер событий Symfony. Но все мои усилия всегда заканчивались тупиком. Слишком много концептуальных проблем. У Swiftmailer странное и сложное наследование классов, а экземпляры сообщений не являются объектами данных, что затрудняет сериализацию. Ему также не хватает некоторых современных функций, таких как поддержка шаблонизатора Twig и системы подключения сторонних поставщиков для отправки почты. Обе функции можно было бы добавить в текущую кодовую базу, но это был бы хаос. Другая проблема заключается в том, как Swiftmailer поддерживает асинхронную отправку – это плохо работает и механизм не гибкий. Я могу продолжать и продолжать, но вы поняли суть.
Итак, в какой-то момент я решил начать все сначала. Вместо того, чтобы пытаться модернизировать код поэтапно, я скопировал код и начал сначала работать над изоляцией компонента Symfony Mime. Затем я максимально реорганизовал остальную кодовую базу, в результате появился Symfony Mailer.
Symfony Mailer имеет довольно много общего кода со Swiftmailer, но не имеет его особенностей и архитектурных проблем.
Переход с Swiftmailer на Symfony Mailer – это относительно простая задача, поскольку концепции в этих двух библиотеках одинаковы.
Это перевод статьи из блога Symfony: https://symfony.com/blog/the-end-of-swiftmailer
Начиная с Symfony 4.3 (май 2019) у нас появился новый компонент Symfony Mailer. С каждым релизом он наращивал функцинальность, добавляя больше сторонних поставщиков и некоторые недостающие функции, которые уже были доступны в старом Swiftmailer, например, поддержку DKIM и электронные подписи.
Начиная с версии Symfony 5.3 можно сказать, что все функции Swiftmailer теперь доступны и в Symfony Mailer.
Пришло время официально прекратить поддержку Swiftmailer в пользу Symfony Mailer. Дату окончания поддержки Swiftmailer - конец ноября 2021 года, т.е. одновременно с выпуском Symfony 5.4 LTS и 6.0.
На самом деле новый компонент Symfony Mailer мог бы выйти под названием Swiftmailer 7. Давайте немного погрузимся в то, как я решил создать Symfony Mailer вместо выпуска Swiftmailer 7. Текущая кодовая база для Swiftmailer была основана Swiftmailer 4.0, который вышел примерно во времена Symfony 1.2 (декабрь 2008)!
В течение многих лет я пытался поэтапно модернизировать Swiftmailer, вводя пространства имен, переходя к автозагрузчику Composer, удаляя специальную (и тяжелую) «последовательность загрузки», пытаясь перейти на DI и диспетчер событий Symfony. Но все мои усилия всегда заканчивались тупиком. Слишком много концептуальных проблем. У Swiftmailer странное и сложное наследование классов, а экземпляры сообщений не являются объектами данных, что затрудняет сериализацию. Ему также не хватает некоторых современных функций, таких как поддержка шаблонизатора Twig и системы подключения сторонних поставщиков для отправки почты. Обе функции можно было бы добавить в текущую кодовую базу, но это был бы хаос. Другая проблема заключается в том, как Swiftmailer поддерживает асинхронную отправку – это плохо работает и механизм не гибкий. Я могу продолжать и продолжать, но вы поняли суть.
Итак, в какой-то момент я решил начать все сначала. Вместо того, чтобы пытаться модернизировать код поэтапно, я скопировал код и начал сначала работать над изоляцией компонента Symfony Mime. Затем я максимально реорганизовал остальную кодовую базу, в результате появился Symfony Mailer.
Symfony Mailer имеет довольно много общего кода со Swiftmailer, но не имеет его особенностей и архитектурных проблем.
Переход с Swiftmailer на Symfony Mailer – это относительно простая задача, поскольку концепции в этих двух библиотеках одинаковы.
Symfony
The end of Swiftmailer (Symfony Blog)
Now comes the time to officially end the maintenance of Swiftmailer in favor of Symfony Mailer. I've set the end of maintenance date to the end of November 2021, at the same time as the Symfony 5.4 LT...
1 сентября пройдёт очередная конференция Laracon Online про Laravel и смежные темы, по ссылке список докладов. Планируют провести текстовую трансляцию — День знаний!
https://laracon.net/#schedule
https://laracon.net/#schedule
Опубликованы результаты опроса State of Laravel 2021. В опросе приняли участие более 4500 разработчиков со всего мира: http://amp.gs/jTf1m
Вчера послушал подкаст «devmode #89 — Should Craft CMS use Yii3 or Laravel?» — выпуск от октября 2020 года: http://amp.gs/jThP2
Craft CMS — это коммерческая CMS построенная на фреймворке Yii2.
Ведущие обсудили текущую экосистему Carft CMS и потенциальный выигрыш от смены фреймворка на Laravel в будущем. Основное преимущество Laravel над Yii2 — это сообщество разработчиков хорошо знакомых с Laravel. Даже многие текущие разработчики из комьюнити Craft CMS параллельно с Yii2 имеют опыт разработки на Laravel.
Одна из киллер-фич и большой аргумент за Laravel, по мнению участников подкаста — это сайт Laracasts.com, очень мощный образовательный ресурс, благодаря которому на рынке достаточно хороших специалистов. Это, в том числе, важный аргумент и для бизнеса, для тех, кто принимает решение в выборе CMS для своего проекта.
А, возможно, стоит подождать Yii3? Такой вопрос поднимался, но каких-то серьёзных аргументов и рассуждений не было, в основном разговор свёлся к преимуществам Laravel.
Craft CMS — это коммерческая CMS построенная на фреймворке Yii2.
Ведущие обсудили текущую экосистему Carft CMS и потенциальный выигрыш от смены фреймворка на Laravel в будущем. Основное преимущество Laravel над Yii2 — это сообщество разработчиков хорошо знакомых с Laravel. Даже многие текущие разработчики из комьюнити Craft CMS параллельно с Yii2 имеют опыт разработки на Laravel.
Одна из киллер-фич и большой аргумент за Laravel, по мнению участников подкаста — это сайт Laracasts.com, очень мощный образовательный ресурс, благодаря которому на рынке достаточно хороших специалистов. Это, в том числе, важный аргумент и для бизнеса, для тех, кто принимает решение в выборе CMS для своего проекта.
А, возможно, стоит подождать Yii3? Такой вопрос поднимался, но каких-то серьёзных аргументов и рассуждений не было, в основном разговор свёлся к преимуществам Laravel.
YouTube
devmode #89 - Should Craft CMS use Yii3 or Laravel?
On this episode we have a round table discussion with a cadre of Craft CMS developers to discuss whether a future version of Craft CMS should use Yii3 or Laravel.
We talk about the relative merits of both staying the course with Yii3 and joining the legions…
We talk about the relative merits of both staying the course with Yii3 and joining the legions…
Распробовал утилиту http://amp.gs/jTvHC, в частности плагин для PhpStorm — ощущается очень удобно, гораздо удобнее чем работа с Laravel Tinker в консоли.
Напомнило старый добрый опыт работы с Clojure REPL из Cusive IDE: пишу небольшой фрагмент Laravel кода и в соседнем окне вижу результат.
Отлично подходит для отладки хитрых hasManyThrough связей между моделями, можно и модели посмотреть и toSql() сразу сделать.
Напомнило старый добрый опыт работы с Clojure REPL из Cusive IDE: пишу небольшой фрагмент Laravel кода и в соседнем окне вижу результат.
Отлично подходит для отладки хитрых hasManyThrough связей между моделями, можно и модели посмотреть и toSql() сразу сделать.
Tinkerwell
The code runner for PHP 💫
Quickly iterate on PHP code within the context of your web application with Tinkerwell – the must-have companion for your favorite IDE.
Подписался на Email рассылку «The Road to PHP 8.1» — на почту приходят небольшие статьи-заметки о фичах PHP 8.1. Очень удобный формат, легко читается, рекомендую. Пример одного из писем на скриншоте. http://amp.gs/jTUoK
Недавно прошла конференция Laracon Online 2021. Я планировал провести текстовую трансляцию, но не сложилось, сейчас смотрю доклады в записи. Тем временем предлагаю посмотреть краткий обзор на канале CutCode: https://youtu.be/b89eeM6O3K8
YouTube
Laracon online summer 2021. Обзор конференции по Laravel 1 сентября 2021
Вот и прошло событие Laracon summer 2021 по Laravel, на котором я присутствовал, смотрел онлайн и как обещал, снимаю для Вас краткой обзор этого события
#laracon2021#laravel#cutcode
-----------------------------------------------------------------------…
#laracon2021#laravel#cutcode
-----------------------------------------------------------------------…
👍1
Всё больше проектов и библиотек на PHP начинают внедрять статическую типизацию. Недавно обновил Rollbar (мониторинг ошибок) на мажорный релиз 3.0 — вся кодовая база покрыта декларациями типов, что потребовало изменений и в коде моего проекта 👆
В целом из громких изменений:
• Добавлена поддержка PHP 8
• Вся кодовая база библиотеки покрыта декларациями типов, включён режим declare(strict_types=1);
• Убрана поддержка PHP 7
https://github.com/rollbar/rollbar-php/blob/master/CHANGELOG.md
В целом из громких изменений:
• Добавлена поддержка PHP 8
• Вся кодовая база библиотеки покрыта декларациями типов, включён режим declare(strict_types=1);
• Убрана поддержка PHP 7
https://github.com/rollbar/rollbar-php/blob/master/CHANGELOG.md
GitHub
rollbar-php/CHANGELOG.md at master · rollbar/rollbar-php
Error tracking and logging from PHP to Rollbar. Contribute to rollbar/rollbar-php development by creating an account on GitHub.
Forwarded from PHP Digest
PHP Дайджест № 211 (1 – 13 сентября 2021)
Вышел первый релиз-кандидат PHP 8.1, в Packagist обнаружено два зловредных пакета, а репозиторий популярного пакета AliceBundle пропал с GitHub.
Для PHP 8.2 предложены два новых RFC: про
Как всегда, в выпуске порция полезных инструментов, статьи и видео.
https://habr.com/ru/post/577660/
Вышел первый релиз-кандидат PHP 8.1, в Packagist обнаружено два зловредных пакета, а репозиторий популярного пакета AliceBundle пропал с GitHub.
Для PHP 8.2 предложены два новых RFC: про
$this в качестве тайпхинта для возвращаемых значений, и про удаление старых видов колбэков.Как всегда, в выпуске порция полезных инструментов, статьи и видео.
https://habr.com/ru/post/577660/
Хабр
PHP Дайджест № 211 (1 – 13 сентября 2021)
Фото: Иван Ганцев . Подборка свежих новостей и материалов из мира PHP. Вышел первый релиз-кандидат PHP 8.1, в Packagist обнаружено два зловредных пакета, а репозиторий популярного пакета AliceBundle...
YouTube канал CutCode продолжает радовать краткими обзорами. В прошлый раз я рекомендовал ролик про Laracon Online, в этот раз демонстрация новых возможностей Laravel Livewire 2.6, люблю такой формат, считай «Пятиминутка Laravel»: https://youtu.be/jRxklBj_hf8
YouTube
Livewire Update 2.6.0. Обзор обновления фреймворка для Laravel
Сегодня мы рассмотрим большое и интересное обновление Livewire Update 2.6.0. Это новая версия фреймворка для Laravel
#livewire#laravel#cutcode
---------------------------------------------------------------------------------
❗️❗️❗️как делать сложные сайты…
#livewire#laravel#cutcode
---------------------------------------------------------------------------------
❗️❗️❗️как делать сложные сайты…
Началась прямая трансляция конференции Saint HighLoad++ 2021, которая проходит два дня 20 и 21 сентября: http://amp.gs/jzntC
Расписание докладов: http://amp.gs/jznte
Расписание докладов: http://amp.gs/jznte
Начал погружаться в Yii3. Прочитал всю доступную документацию (http://amp.gs/jzhcB), полазил по соответствующему разделу форума (http://amp.gs/jzhcn), создал демо-приложение (http://amp.gs/jzhcG). Пока всё выглядит аккуратно и приятно.
YaTalsk, Yii3, Tinkerwell, Mac mini M1...
Пятиминутка PHP
Поговорим на несколько разных тем: подкаст и конференция YaTalks, первые впечатления от Yii3, PHP 8.1 уже близко, Tinkerwell, Mac mini на M1, механические клавиатуры и коврик для мыши с JSON API.
https://yatalks.yandex.ru/
https://www.youtube.com/watch?v=aH1XoxCnjs4
https://t.me/yii3chronicles
https://gist.github.com/devanych/9475d7d3b0e2507b564c8d174a3c0fa7
https://stitcher.io/blog/new-in-php-81
https://tinkerwell.app
https://beyondco.de/blog/tinkerwell
https://geekboards.ru
https://ru.steelseries.com/gaming-mousepads/qck-prism-series
https://yatalks.yandex.ru/
https://www.youtube.com/watch?v=aH1XoxCnjs4
https://t.me/yii3chronicles
https://gist.github.com/devanych/9475d7d3b0e2507b564c8d174a3c0fa7
https://stitcher.io/blog/new-in-php-81
https://tinkerwell.app
https://beyondco.de/blog/tinkerwell
https://geekboards.ru
https://ru.steelseries.com/gaming-mousepads/qck-prism-series
Открыл для себя новый продукт от JetBrains: Qodana - позволяет запускать инспекции качества кода, которые нам знакомы по PhpStorm, на CI сервере или в локально в консоли. Есть готовые рецепты для GitHub Actions и GitLab CI. На выходе генерирует красивый HTML отчёт. Есть тонкая настройка с помощью добавления yml в репозиторий проекта. Краткий обзор: https://youtu.be/dgIw64OdjdU
YouTube
Welcome to Qodana
Qodana is a code quality monitoring platform from JetBrains that allows you to evaluate the integrity of code you own, contract, or purchase. It provides an overview of the project quality, lets you set quality targets, and track progress on them. You can…
История появления утилит статического анализа PHP кода из книги «Rector - The Power of Automated Refactoring» #php
Автор Rector рекомендует сначала проверить код с помощью PHPStan на level 3 или 4, и только после этого запускать Rector. #php
Мероприятие от Хекслет: 16 ноября в 19:00 по Москве на онлайн-встрече с CEO Хекслета Кириллом Мокевниным поговорим о том, почему PHP по-прежнему жив и держит первенство самого используемого бэкенд-языка.
Разберём эти и многие другие вопросы:
Какие правильные инженерные практики пришли в PHP за последние годы
Как стать хорошим разработчиком на PHP
Почему PHP идеален для старта в регионах
https://profession.hexlet.io/dod-php/
Разберём эти и многие другие вопросы:
Какие правильные инженерные практики пришли в PHP за последние годы
Как стать хорошим разработчиком на PHP
Почему PHP идеален для старта в регионах
https://profession.hexlet.io/dod-php/
profession.hexlet.io
День открытых дверей Хекслета: PHP-разработчик 2022
Что на самом деле нужно, чтобы стать востребованным специалистом и найти работу? Перспективы, рынок, трудоустройство. Спикер – Владлен Гилязетдинов, тимлид в HART Digital.
Как работает OPcache?
Пятиминутка PHP
Один из основных на сегодняшний день разработчиков PHP Никита Попов рассказал в своём блоге некоторые детали работы OPcache.
OPcahce — это расширение для PHP, которое ускоряет работу за счёт кэширования опкодов.
В этом выпуске подкаста Пятиминутка PHP сделаю краткий пересказ, поробую объяснить своими словами.
https://www.npopov.com/2021/10/13/How-opcache-works.html
OPcahce — это расширение для PHP, которое ускоряет работу за счёт кэширования опкодов.
В этом выпуске подкаста Пятиминутка PHP сделаю краткий пересказ, поробую объяснить своими словами.
https://www.npopov.com/2021/10/13/How-opcache-works.html