PHP Дайджест № 215 (1 – 15 ноября 2021)
PHP Дайджест № 215 (1 – 15 ноября 2021)
Вместе с
Insolita пробуем новый формат дайджеста в телеграме. Напишите в комментариях как вам?
⚡️НОВОСТИ
🔹 PHP 8.1.0 RC 6
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
🔹 [RFC] Migrating to Github Issues
Предлагается перенести баги со старой системы
bugs.php.net на GitHub в репозиторий
php/php-src. Это касается всех багов, кроме секьюрити-проблем, которые не должны быть публичными.
В
тестовом репозитории настроены шаблоны для баг-репортов запросов на фичи. Можно создать и посмотреть, как это будет выглядеть.
🔹 [RFC] Deprecate dynamic properties
🔹 [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
🔹 Локальная 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.
—————
👉 В полном дайджесте на Хабре более подробно про эти новости, а также ссылки по фреймворкам.