Ядро Битрикс - история и планы
Пятиминутка 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?
Про технологии в актуальной версии 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
Решил зарегистрировать сообщество «Пятиминутка PHP», присоединяйтесь: http://amp.gs/j8Tw4
Яндекс Кью
«Пятиминутка PHP» — сообщество Яндекс Кью
Сообщество о языке программирования PHP. Исследуем тренды в веб-разработке, поднимаем темы про развитие языка PHP, фреймворков и инструментов. А также про инфраструктуру, администрирование Linux и DevOps подходы.
Подписался на телеграм канал про разработку Yii3 из первых рук. Я не использую Yii в своих проектах, но канал читается классно и интересно, как живой changelog или дневник разработчика: http://amp.gs/j8zqX
Telegram
Хроники Yii3
Описание процесса разработки фреймворка из первых рук 😎
Обсуждение:
https://t.me/yii3ru
Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0
Поддержать разработчиков:
https://opencollective.com/yiisoft
Обсуждение:
https://t.me/yii3ru
Сводка по всем пакетам:
https://www.yiiframework.com/status/3.0
Поддержать разработчиков:
https://opencollective.com/yiisoft
Какую СУБД выбрать? Какой язык программирования? «Любой правильный выбор устаревает, если ваш продукт проживёт достаточно долго» — подслушано на 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
В июле 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.
Для начала важно уточнить, что 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
Будет бесплатная трансляция всех докладов в день проведения, но если хотите посмотреть позже в записи, то нужно приобрести билет.
Окончательно программа будет сформирована к 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
— будет требовать 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 – это относительно простая задача, поскольку концепции в этих двух библиотеках одинаковы.
Это перевод статьи из блога 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...