PHP Digest
8.53K subscribers
60 photos
3 videos
287 links
PHP Дайджест

Новости, материалы и инструменты из мира PHP — раз в месяц.

Вопросы, замечания, предложения: @pronskiy
Download Telegram
PHP Дайджест № 214 (11 – 25 октября 2021)

Конфликт вокруг расширения Swoole и создание форка OpenSwoole; асинхронные фреймворки Amp и ReactPHP выпустили общую реализацию ивент-лупа; PHP 8.1 RC 4; принят первый RFC для 8.2.
Также в выпуске два поста от Никиты Попова, полезные статьи, видео.

https://habr.com/ru/post/585326/
PHP Дайджест № 215 (1 – 15 ноября 2021)

Вышел последний релиз кандидат PHP 8.1 перед финальным релизом; доступны бенчмарки PHP 8.1; в PHP 8.2 планируется задепрекейтить динамические свойства — добро или зло?; про перенос багов с bugs.php.net на GitHub; немного обновлен PSR-16.
Также в выпуске полезные статьи, видео и другие новости сообщества

https://habr.com/ru/post/589229/
PHP Дайджест № 215 (1 – 15 ноября 2021)

Вместе с Insolita пробуем новый формат дайджеста в телеграме. Напишите в комментариях как вам?


⚡️НОВОСТИ

🔹
PHP 8.1.0 RC 6
Вышел последний релиз кандидат, а значит PHP 8.1 выйдет уже меньше, чем через две недели.

▪️ Интересный обзор новых фич PHP 8.1 сделал Mohamed Said (Core Laravel): 📺 Getting Ready for PHP 8.1
▪️ Brent Roose: PHP 8.1 в 8 блоках кода

Кроме прочего, в PHP 8.1 сделано много улучшений по производительности. Судя по результатам свежих бенчмарков от одного из core PHP разработчиков, Symfony demo приложение работает на ~30% быстрее, чем на PHP 8.0.

🔹 [RFC] Migrating to Github Issues
Предлагается перенести баги со старой системы bugs.php.net на GitHub в репозиторий php/php-src. Это касается всех багов, кроме секьюрити-проблем, которые не должны быть публичными.

В тестовом репозитории настроены шаблоны для баг-репортов запросов на фичи. Можно создать и посмотреть, как это будет выглядеть.

🔹 [RFC] Deprecate dynamic properties
На голосовании RFC с предложением задепрекейтить и впоследствии убрать динамические (необъявленные) свойства.

class User {
public $name;
}

$user = new User;

// Assigns declared property User::$name.
$user->name = «foo»;

// Oops, a typo:
$user->nane = «foo»;

// PHP <= 8.1: Молча создает динамическое свойство $user->nane.
// PHP 8.2: Вызывает предупреждение, но все равно создает динамическое свойство.
// PHP 9.0: Выбрасывает исключение Error.

Это изменение не будет касаться класса stdClass и унаследованных от него. А также не касается классов с магическими __get/__set.

Кроме того, в последней версии RFC добавлен еще атрибут #[AllowDynamicProperties]. Его можно навесить на любой класс и в этом классе продолжат работать динамические свойства.

Предложение вызвало волну споров в твиттере. Вот пример треда с недовольными таким подходом. Это изменение обратной совместимости и потребуется обновлять много кода, да и вообще ломает динамическую сущность PHP — говорят они.


🔹 Обновлен PSR-16: Common Interface for Caching Libraries

Для пакета php-fig/simple-cache выпущены две новые версии. В 2.0.0 добавлены типы для аргументов, а в 3.0.0 — типы возвращаемых значений.

🔹 Локальная root-уязвимость в PHP-FPM

Уязвимость позволяет пользователю с низкими привилегиями (например, www-data) повысить свои привилегии до уровня root, используя ошибку в PHP-FPM. Хоть это серьезная проблема, но не RCE. То есть злоумышленнику сначала надо будет использовать другие техники, чтоб завладеть рабочим процессом PHP. По ссылке подробный разбор от исследователей.

Уязвимость исправлена в поддерживаемых ветках PHP 7.4.25 и PHP 8.0.12 и PHP 7.3.32.

🔸 PHPStan 1.0 — После шести лет разработки состоялся первый стабильный релиз статического анализатора. В релизе новый уровень проверки «9» и другие улучшения.
Есть свежее интервью с автором 📺 PHPStan: PHP Release Radar — Episode 13


📝 СТАТЬИ

🔸 Как ManyChat на PHP8 переезжал

🔸 Перевод аудио-сообщений в текст в telegram при помощи Wit

🔸 Сравнение php-fpm, nginx-unit и laravel-octane

🔸 Эволюция PHP-объектов

🔸 Современное шифрование в PHP с помощью библиотеки libsodium

🔸 Type variance in PHP — Никита Попов об особенностях системы типов в PHP.

🔸 Интересный трюк от Larry Garfield с ридонли свойствами в PHP 8.1.

—————

👉 В полном дайджесте на Хабре более подробно про эти новости, а также ссылки по фреймворкам.
JetBrains и другие компании инициировали создание фонда PHP

https://blog.jetbrains.com/phpstorm/2021/11/the-php-foundation/

Никита Попов, кроме PHP, долгое время контрибьютил в LLVM и Rust. И теперь решил переключить свою профессиональную деятельность на LLVM. Он все еще будет частью PHP-сообщества, но контрибьютить будет значительно меньше.

Это подтолкнуло на создание фонда PHP, цель которого — обеспечить развитие языка.

JetBrains, Automattic, Acquia, Laravel, Private Packagist, Symfony, Zend, Craft CMS, Tideways и PrestaShop объединили усилия и стали основателями и первыми финансовыми спонсорами фонда.

Первичная цель фонда — нанять part-time или full-time core разработчиков для работы на PHP.

Поддержать фонд донатом можно по ссылке:
https://opencollective.com/phpfoundation
Вышел PHP 8.1 🎉

https://www.php.net/releases/8.1/ru.php

Основные новые возможности:

🔹 Enums они же перечисления;
🔹 Readonly свойства;
🔹 First-class callable — получение ссылки на любую функцию;
🔹 Оператор new в инициализаторах (и вложенные атрибуты);
🔹 Файберы;
🔹 final константы в классах;
🔹 Новый тип never для (не)возвращаемых значений;
🔹 Запись восьмеричных чисел с префиксом 0o;
🔹 Оператор ... поддерживает массивы со строковыми ключами;
🔹 Много улучшений по производительности
(+23% к скорости на демо приложении Symfony)

В релизе также много депрекейшнов, улучшений консистентности и обработки ошибок.

Основные депрекейшны:

🔺 Объявлено устаревшим неявное преобразование float в int, где теряется дробная часть;
🔺 Интерфейс Serializable объявлен устаревшим;
🔺 Ограничено использование $GLOBALS;
🔺 Объявлено устаревшим передача значения null в параметры встроенных функций, которые не nullable;
🔺 Добавлены типы для возвращаемых значений встроенных классов (и новый атрибут #[ReturnTypeWillChange]);
🔺 Продолжено удаление типа resource. Ресурсы file_info, imap FTP Connection, LDAP, PostgreSQL теперь будут объектами, соответственно finfo, IMAP\Connection, FTP\Connection, PgSql\Connection, PgSql\Result.

Еще почитать-посмотреть:

• Подробно: php.watch/versions/8.1
• Коротко в видео: What's New in PHP 8.1
• Валентин Удальцов: Лайв-кодинг-обзор PHP 8.1
• Максимально полный список изменений: php-8.1.0/UPGRADING
PHP Дайджест № 216 (15 – 30 ноября 2021)

⚡️НОВОСТИ

🔹
Вышел PHP 8.1
Основные новые возможности:
- Enums они же перечисления;
- Readonly свойства;
- First-class callable — получение ссылки на любую функцию;
- Оператор new в инициализаторах (и вложенные атрибуты);
- Файберы;
- final константы в классах;
- Новый тип never для (не)возвращаемых значений;
- Запись восьмеричных чисел с префиксом 0o;
- Оператор ... поддерживает массивы со строковыми ключами;

Подробнее ⬆️

⚠️ Важно!
- Активная поддержка PHP 7.4 уже закончена, то есть будут только секьюрити фиксы в течение года.
- Поддержка PHP 7.3 будет полностью прекращена 6 декабря.
Обновляйтесь.

🔹 The New Life of PHP – The PHP Foundation
JetBrains совместно с компаниями Automattic (WordPress), Acquia (Drupal), Laravel, Private Packagist (Composer), Symfony, Zend, Craft CMS, Tideways и PrestaShop учредили некоммерческую организацию PHP Foundation, миссия которой — обеспечить долгосрочное развитие языка PHP.

Подробно об истории создания и работе фонда смотрите в записи стрима: Про PHP Foundation с Романом Пронским.

🔹[RFC] Deprecate dynamic properties
Несмотря на многочисленные споры, предложение принято с перевесом всего в два голоса 52:25!
Это значит, что в PHP 8.2 динамические (необъявленные) свойства будут объявлены устаревшими, а в PHP 9.0 они будут вовсе удалены.
Подробнее в PHP Дайджесте № 215.

🔹 Вышла Doctrine DBAL 3.2.0
Также обнаружена критическая SQL-инъекция в doctrine/dbal 3.0.0 — 3.1.3, стоит немедленно обновиться до 3.1.4 или новее.

🔹 Вышли Symfony 6.0, Symfony 5.4
Разница между ними в том, что Symfony 5.4 содержит устаревшие возможности и обратно совместим, а в Symfony 6.0 все deprecated удалены.
Что нового можно посмотреть тут symfony.com/blog/category/living-on-the-edge.

🔹[RFC] Readonly classes
Máté Kocsis предлагает для PHP 8.2 readonly классы. По сути, это просто класс в котором все свойства readonly и запрещены динамические свойства. То есть это небольшой синтаксический сахар для удобства.

📝 СТАТЬИ

🔸 Improve Symfony Tests Performance — Наиболее полный список практических советов для многократного уменьшения времени тестов от Макса Рафалко, автора Infection.

🔸 Шпаргалка по современному PHP.

🔸 A long way from Monolithic to Composable Architecture — Про изменение архитектуры Magento.

🔸 Настройка PHP-FPM — Полезная заметка на канале Beer::PHP 🍺.

🔸 Практики внедрения зависимостей — Мега-статья от Дмитрия Елисеева.

—————

👉 В полном дайджесте на Хабре более подробно про эти новости, а также инструменты, ссылки по фреймворкам.

Дайджест подготовлен совместно с Insolita.

🐘
Вышел PhpStorm 2021.3

Очень мощный релиз:

🔹 Полная поддержка PHP 8.1.
🔹 Улучшена поддержка дженериков (особенно для doctrine/collections и eloquent/collections из Laravel 9).
🔹 Рефакторинг перемещения классов и неймспесов с помощью drag-and-drop.
🔹 Инструменты удаленной разработки.
🔹 Улучшения деплоймента и других подсистем.

На Хабре смотрите разбор всех-всех изменений и новых фич:
https://habr.com/ru/company/JetBrains/blog/594473/
PHP Дайджест № 217 (1 – 13 декабря 2021)

⚡️НОВОСТИ

🔹 Баги PHP теперь на GitHub

Предложение мигрировать баги с bugs.php.net на GitHub принято практически единогласно.
Раздел github.com/php/php-src/issues уже открыт и можно видеть первые созданные баги.

🔹 Вышел PhpStorm 2021.3

Мажорное обновление IDE с кучей улучшений. Из основного:
▫️ Полная поддержка PHP 8.1.
▫️ Улучшена поддержка дженериков.
▫️ Рефакторинг перемещения классов и неймспейсов с помощью drag-and-drop.
▫️ Инструменты удаленной разработки.
▫️ Улучшения деплоймента и других подсистем.

Проверки PhpStorm можно запускать в CI благодаря Qodana for PHP — это отдельный инструмент от JetBrains, который работает на движке PhpStorm. Можно использовать, например, для поиска проблем совместимости с PHP 8.0 / 8.1.

🔹 Закончена поддержка PHP 7.3

Для PHP 7.4 активная поддержка тоже завершена, но еще в течение года будут выходить исправления проблем безопасности в случае их обнаружения.

phpreleases.com — API для получения информации о поддерживаемых версиях PHP.

🔹 [RFC] User Defined Operator Overloads

Снова на обсуждении предложение добавить перегрузку операторов в PHP. На этот раз довольно интересный хоть и спорный подход.

Раньше предлагалось для каждого оператора определить магический метод, например, __add() для + или __mul() для *.

В текущей редакции RFC предлагается ввести новое ключевое слово operator. Оно используется вместо function и по сути делает то же самое, но позволяет использовать символы операторов вместо имен функций.

class Collection {
// Ранее предлагалось вот так
function __add(Collection $other, OperandPosition $operandPos) {}

// А теперь вот так
operator +(Collection $other, OperandPosition $operandPos) {}
}

Нужна ли в PHP перегрузка операторов? Есть ли применение в ваших приложениях?

🔹 2022 PHP Landscape Report Survey

Ежегодный опрос PHP-сообщества от Zend.
Скоро будет запущен опрос русскоязычного сообщества от Алексея Корнеева и PHP-чатов/каналов, ну а пока можно заполнить опрос от Zend.

🔹 Начата работа над PSR стандартом для i18n

Задачи интернационализации и локализации встречаются повсеместно и иметь общий стандарт было бы отлично.
Пока сформирован мета-документ, в котором описаны цели и не-цели стандарта. А также собирается рабочая группа, в которую среди прочих вошел Александр Макаров.


🌀 РАЗНОЕ

🔸 Строим эффективный сетевой обмен в PHP-микросервисах.

🔸 Самые заметные изменения языка php за последние годы.

📺 PHP in 2021 — Новое видео от Brent Roose. Также в виде статьи.

📺 Запись BeerPHP SPb Meetup #3

—————

👉 В полном дайджесте на Хабре про другие новости, а также инструменты и ссылки по фреймворкам.

Дайджест подготовлен совместно с Insolita.

🐘
Опрос по итогам года в PHP-сообществе

https://phpsurvey.typeform.com/opros2021

Если вы еще не успели заполнить опрос, то вот несколько фактов о нем:

▫️ Помогали готовить опрос представители PHP-сообществ
▫️ По итогам прошлого года был стрим и подборка лучших ссылок
▫️ Опрос без регистрации, но если в конце оставить email, то есть шанс получить слоника и другие подарки

Пройти опрос 👉 https://phpsurvey.typeform.com/opros2021
PHP Дайджест № 218 (13 – 27 декабря 2021)

Composer 2.2, Cycle 2.0, обновления актуальных веток PHP и другие релизы; конкурс с подведением итогов года; пачка интересных статей, инструменты, видео и другие новости сообщества.

https://habr.com/ru/post/598189/
Forwarded from Пых (Валентин Удальцов)
🤝 PHP Foundation

С этого дня я ежемесячно перевожу $50 в фонд PHP.

PHP Foundation — это некоммерческая организация, миссия которой — обеспечить долгосрочное развитие PHP. Главный идеолог фонда — Роман Пронский, автор PHP Digest. Запуск проекта стал совместной инициативой JetBrains, Laravel, Symfony, Zend и других компаний.

На текущий момент фонд обработал заявки от разработчиков, которые хотят участвовать в разработке языка, и теперь решает юридические вопросы. Поэтому в графе расходов пока пусто — полноценная работа начнётся после согласования документов. Подробнее читайте в первом апдейте.

Больше о фонде:
216-ый выпуск PHP Дайджеста,
стрим к выходу PHP 8.1,
блог JetBrains,
Twitter проекта.

https://opencollective.com/phpfoundation