Пятиминутка PHP
2.87K subscribers
334 photos
26 videos
825 links
Подкаст о PHP, DBA, архитектуре, DevOps. Авторское мнение о современных трендах в веб-разработке и интересные беседы с гостями. Темы про СУБД, Linux, DevOps

Автор: @petrmyazin
Download Telegram
Derick Rethans, автор Xdebug, раз в месяц описывает в своём блоге, что нового в разработке отладчика за последний месяц.

В июле Derick работал над Xdebug 50 часов, но финансовая поддержка от сообщества через Patreon и GitHub Sponsors пока не велика и покрывает лишь 25 часов работы.

В июле добавилась поддержка Enum из PHP 8.1, но ещё предстоит добавить поддержку IDE, например уже открыты тикеты для PhpStorm и VS Code.

Добавлено наглядное отображение переменных, использующих First Class Callable Syntax.

Ближайшая версия Xdebug 3.1 будет работать с PHP 7.2 - 8.1

Ещё пара изменений с поддержанием отладочной сессии по HTTP, а также хитрости с отладкой долгоживущих PHP процессов.

Идёт работа над Xdebug Cloud - платный сервис для проксирования сессий отладки, который пригодится в случае невозможности прямого подключения Xdebug к IDE. Стартовый тарифный план 49 фунтов в месяц.

На своём YouTube канале Derick опубликовал два новых видео о настройке профилировщика Xdebug и об утилите KCacheGrind для просмотра результатов профилирования.

http://amp.gs/j8JSj
Как запретить eval() в PHP? Интересная статья от Александра Майорова: http://amp.gs/j828d

Для начала важно уточнить, что eval() — это не функция, а языковая конструкция. Если бы это была функция, то можно было бы воспользоваться директивой в php.ini файле disable_functions.

В своей статье Александр рассказывает, как нашел фрагмент кода в исходниках PHP, который запускает выполнение eval и как написать собственное расширение, отключающее eval. При этом можно выдать явную ошибку «eval не пройдёт!» или ошибку замаскированную под синтаксическую.

В целом хорошая тема для RFC в будущие версии PHP — возможность отключить eval через настройки в php.ini.
PHP fwdays'21 — знаменитая и хорошо себя зарекомендовавшая за предыдущие годы конференция пройдёт в online формате 4 сентября: https://bit.ly/2XnCUeb

Будет бесплатная трансляция всех докладов в день проведения, но если хотите посмотреть позже в записи, то нужно приобрести билет.

Окончательно программа будет сформирована к 30 августа, а пока вот что интересненького ожидается:
— Fault tolerant workflow orchestration on PHP — Антон Титов про Temporal IO + RoadRunner
— Реальный опыт успешного переноса Laravel микросервисов в AWS Lambda при помощи Vapor (огонь!)
— Интересный доклад на тему запрета наследования с помощью final — нужно ли? И когда?
— Оптимизация тестирования от автора PHPUnit, Sebastian Bergmann
— Про Full Stack фреймворки и как генерировать фронетнд с помощью бэкенда на PHP (назад в будущее?)

В общем, я добавляю в календарь напоминание на 4 сентября: https://bit.ly/2XnCUeb
Новости из мира CakePHP, новое в верссии 5.0:
— будет требовать PHP 8;
— весь код максимально типизирован (параметры методов и возвращаемые значения);
— убран весь deprated код ветки 4.x.

Roadmap: http://amp.gs/j85rJ

Там же по ссылке есть список идей на версию CakePHP 6
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 – это относительно простая задача, поскольку концепции в этих двух библиотеках одинаковы.
1 сентября пройдёт очередная конференция Laracon Online про Laravel и смежные темы, по ссылке список докладов. Планируют провести текстовую трансляцию — День знаний!

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.
Распробовал утилиту http://amp.gs/jTvHC, в частности плагин для PhpStorm — ощущается очень удобно, гораздо удобнее чем работа с Laravel Tinker в консоли.

Напомнило старый добрый опыт работы с Clojure REPL из Cusive IDE: пишу небольшой фрагмент Laravel кода и в соседнем окне вижу результат.

Отлично подходит для отладки хитрых hasManyThrough связей между моделями, можно и модели посмотреть и toSql() сразу сделать.
Подписался на Email рассылку «The Road to PHP 8.1» — на почту приходят небольшие статьи-заметки о фичах PHP 8.1. Очень удобный формат, легко читается, рекомендую. Пример одного из писем на скриншоте. http://amp.gs/jTUoK
Недавно прошла конференция Laracon Online 2021. Я планировал провести текстовую трансляцию, но не сложилось, сейчас смотрю доклады в записи. Тем временем предлагаю посмотреть краткий обзор на канале CutCode: https://youtu.be/b89eeM6O3K8
👍1
Всё больше проектов и библиотек на PHP начинают внедрять статическую типизацию. Недавно обновил Rollbar (мониторинг ошибок) на мажорный релиз 3.0 — вся кодовая база покрыта декларациями типов, что потребовало изменений и в коде моего проекта 👆

В целом из громких изменений:
• Добавлена поддержка PHP 8
• Вся кодовая база библиотеки покрыта декларациями типов, включён режим declare(strict_types=1);
• Убрана поддержка PHP 7
https://github.com/rollbar/rollbar-php/blob/master/CHANGELOG.md
Forwarded from PHP Digest
PHP Дайджест № 211 (1 – 13 сентября 2021)

Вышел первый релиз-кандидат PHP 8.1, в Packagist обнаружено два зловредных пакета, а репозиторий популярного пакета AliceBundle пропал с GitHub.

Для PHP 8.2 предложены два новых RFC: про $this в качестве тайпхинта для возвращаемых значений, и про удаление старых видов колбэков.

Как всегда, в выпуске порция полезных инструментов, статьи и видео.

https://habr.com/ru/post/577660/
YouTube канал CutCode продолжает радовать краткими обзорами. В прошлый раз я рекомендовал ролик про Laracon Online, в этот раз демонстрация новых возможностей Laravel Livewire 2.6, люблю такой формат, считай «Пятиминутка Laravel»: https://youtu.be/jRxklBj_hf8
Сделай правильный выбор ради будущего Айти
Началась прямая трансляция конференции Saint HighLoad++ 2021, которая проходит два дня 20 и 21 сентября: http://amp.gs/jzntC

Расписание докладов: 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
Открыл для себя новый продукт от JetBrains: Qodana - позволяет запускать инспекции качества кода, которые нам знакомы по PhpStorm, на CI сервере или в локально в консоли. Есть готовые рецепты для GitHub Actions и GitLab CI. На выходе генерирует красивый HTML отчёт. Есть тонкая настройка с помощью добавления yml в репозиторий проекта. Краткий обзор: https://youtu.be/dgIw64OdjdU