
Подборка свежих новостей, инструментов, видео и материалов из мира PHP.
Приятного чтения!
Этот дайджест подготовлен совместно с Insolita. Если понравился выпуск, плюсаните пост, пожалуйста.
⚡️️ Новости
- PHP 7.4.28, PHP 8.0.16, PHP 8.1.3
Обновления актуальных веток PHP с фиксом уязвимости вphp_filter_float(), а в 8.0 и 8.1 еще с пачкой других фиксов.
Для PHP 7.3 обновления ухе не выходят, даже если обнаружены проблемы безопасности. И хотя данной уязвимости PHP 7.3 не подвержена, тем не менее если вы все еще используете эту версию, то лучше запланировать обновление в ближайшее время.
- Ubuntu 22.04 LTS выйдет с PHP 8.1
Очередной релиз популярного Linux дистрибутива выйдет 21 апреля с предустановленным PHP версии 8.1.
В связи с этим предлагается поднять минимальную версию PHP в следующем релизе Symfony 6.1. А для Drupal 10 это уже сделали.
- PhpStorm 2022.1 EAP
Продолжается программа раннего доступа первого мажорного релиза IDE в этом году. Сделали поддержку многострочных и вложенных аннотаций array shape! Можно использовать как в видеPHPDoc, так и в виде атрибута#[ArrayShape].
- [RFC] Redacting parameters in back traces
На голосовании предложение добавить аттрибут#[SensitiveParameter]для предотвращения отображения конфиденциальныx данных в отладочных логах.
Скрытый текстfunction test( $foo, #[\SensitiveParameter] $bar, $baz ) { throw new \Exception('Error'); } test('foo', 'bar', 'baz'); // В результате в отладочной строке значение секретной переменной должно быть заменено на какое-то абстрактное значение: /* Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} thrown in test.php on line 8 */
- [RFC] Undefined Variable Error Promotion
Автор ранее предложил в PHP 9 перевести многие оставшиеся предупреждения (WARNING) в полноценные исключения. Такое уже раньше делали в PHP 8.0.
Ну а начать решил с использования необъявленных переменных. Сейчас в этом случае бросаетсяWarningи используется значениеnull.
Скрытый текст// PHP < 8.2 if ($user->admin) { $restricted = false; } if ($restricted) { // Сейчас тут просто WARNING, а будет Exception die('You do not have permission to be here'); } // Чтоб исправить, нужно добавить инициализацию переменной // PHP >= 8.2 $restricted = true; // <-- Вот тут if ($user->admin) { $restricted = false; } if ($restricted) { // Сейчас тут просто WARNING, а будет Exception die('You do not have permission to be here'); }
- [RFC] Random Extension 4.0
Сейчас функции типаrand()илиmt_rand()будут генерировать одну и ту же последовательность для одинакового посевного (seed) значения, заданного с помощьюsrand(). Но из-за использования глобального состояния невозможно создать несколько генераторов с разными посевными значениями и использовать их одновременно.
Автор предлагает добавить объектный API для работы с генераторами псевдослучайных последовательностей, чтоб решить проблему глобального состояния.
Скрытый текст// Сейчас вот так mt_srand(1234, MT_RAND_PHP); foobar(); $result = str_shuffle('foobar'); mt_srand(1234, MT_RAND_MT19937); foobar(); $next = mt_rand(); // Предлагается вот так $randomizer = new Random\Randomizer(new Random\Engine\MersenneTwister(1234, MT_RAND_PHP)); foobar(); $result = $randomizer->shuffleString('foobar'); $randommizer = new Random\Randomizer(new Random\Engine\MersenneTwister(1234, MT_RAND_MT19937)); foobar(); $next = $randomizer->getInt();
- [RFC] Allow null and false as stand-alone types
Предлагается добавить возможность использоватьnullиfalseв декларациях типов.
Во-первых, это недостающие куски для полноты системы типов в PHP — естьmixed, добавилиnever, объединения и пересечения, не хватает юнит-типа.
Во-вторых, такие типы позволят покрыть некоторые граничные случаи и улучшить статический анализ.
Поделиться ссылкой:
Интересные статьи
Интересные статьи
Ранее мы поделились подборкой настольных справочников для сисадминов. На этот раз — рассказывем о тематических материалах из нашего корп. блога.
В этом дайджесте:Обновление популярных гемов.Сборник гайдов и статей (RU/ENG) #3.Подборка полезных гемов #5.Интересные open-source проекты на GitHub #4.Интересный видео/аудио контент, связанный с Ruby...
Мартовский дайджест радует разнообразием курсов, вебинаров, конференций и митапов IT HR сообщества. Пока они еще в безопасном онлайн-формате, но тяга людей к личному обще...
В нашем новом дайджесте модуляризация iOS-приложений и интеграция с Siri, удаление неудаляемых приложений и руководство по стилю Kotlin, уязвимости и рендеринг островов, 10,000 серверов и...
Понадобилось немногим более 6 лет на выпуск 300 дайджестов. Всем привет, меня зовут Леонид, и это я делаю эти статьи.
