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

Автор: @petrmyazin
Download Telegram
Нужно было переустановить PHP проект, который не трогал уже три года. Запустил Ansible плейбуки, всё установилось и заработало с первого раза. Вот что Infrastructure as a Code животворящий делает!
Порекомендую видео доклада: https://youtu.be/--lenvvFwrg?t=4216

Весьма позитивный опыт перевода всех разработчиков веб-студии с Windows на Linux + Docker для упрощения развёртывания проектов. Особенность веб-студии в том, что проектов много и иногда разработчику нужно переключаться, работать с несколькими параллельно, причём там могут быть разные версии PHP и свои инфраструктурные особенности.

Классическая история проб и ошибок:
— от локальной разработки на Windows
— через разработку на удалённых dev серверах
— подход к OpenServer, Vagrant
— переход на Desktop Linux (LAMP)
— перевод проектов в Docker с обвязкой из нескольких сервисных контейнеров: nginx-proxy, dns-gen, mailcathcer, portainer
— Minikube vs k3s
— А что с WSL?

Заголовок видео «Митап Разработка современного e-com на Битрикc», но в докладе нет Битрикс-специфики, советы применимы к любому PHP проекту.
Ядро Битрикс - история и планы
Пятиминутка PHP
Для этого выпуска подкаста я пригласил двух разработчиков ядра Битрикс: Дмитрия Медведева (https://facebook.com/medveddev) и Ивана Челищева (https://www.facebook.com/chelishchev). Обсудили историю развития Битрикс, что такое ядро и Bitrix Framework, что такое D7, как выглядит разработка под Битрикс сейчас и какие планы на будущее.

Про технологии в актуальной версии D7:
- Используются суперглобальные массивы $_GET, $_POST?
- ORM, QueryBuilder и работа с базой
- Active Record или Data Mapper?
- Почему не Doctrine?
- Миграции и система обновлений
- Поддержка различных СУБД?
- Почему нет PostgreSQL?
- Роутинг и точки входа
- Шаблонизация, защита от XSS, подключение внешних шаблонов
- Работа с очередями, агенты
- IoC контейнер или Service Locator?
- Autowiring в контроллере
- Консольные команды на основе symfony/console
- Другие внешние библиотеки
- Сборка PHP кода
- Сборка фронтенд кода: инструмент Bitrix CLI на основе Rollup

Что планируется в будущем Bitrix Framework 3?
Вы пользовались сервисом Яндекс.Кью? Я что-то слышал, но не вникал. Сервис объединяющий сообщества с вопросами и ответами, возможно это что-то типа Quora.

Решил зарегистрировать сообщество «Пятиминутка PHP», присоединяйтесь: http://amp.gs/j8Tw4
Подписался на телеграм канал про разработку Yii3 из первых рук. Я не использую Yii в своих проектах, но канал читается классно и интересно, как живой changelog или дневник разработчика: http://amp.gs/j8zqX
Incremental vs. Iterative:
Какую СУБД выбрать? Какой язык программирования? «Любой правильный выбор устаревает, если ваш продукт проживёт достаточно долго» — подслушано на Podlodka Techlead Crew http://amp.gs/j8RiL
Разработка больших проектов на Битрикс
Пятиминутка PHP
Второй подкаст в серии про Битрикс. Иван Поддубный (https://vk.com/north_leshiy) из компании Вебпрактик рассказывает про свой опыт разработки крупных проектов на Битрикс и сравнивает с другими фреймворками (Laravel) и стеками технологий.
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