PHP Дайджест № 222 (7 – 21 февраля 2022)

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


Подборка свежих новостей, инструментов, видео и материалов из мира 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, объединения и пересечения, не хватает юнит-типа.
    Во-вторых, такие типы позволят покрыть некоторые граничные случаи и улучшить статический анализ.


Источник: https://habr.com/ru/post/652753/


Интересные статьи

Интересные статьи

Ранее мы поделились подборкой настольных справочников для сисадминов. На этот раз — рассказывем о тематических материалах из нашего корп. блога.
В этом дайджесте:Обновление популярных гемов.Сборник гайдов и статей (RU/ENG) #3.Подборка полезных гемов #5.Интересные open-source проекты на GitHub #4.Интересный видео/аудио контент, связанный с Ruby...
Мартовский дайджест радует разнообразием курсов, вебинаров, конференций и митапов IT HR сообщества. Пока они еще в безопасном онлайн-формате, но тяга людей к личному обще...
В нашем новом дайджесте модуляризация iOS-приложений и интеграция с Siri, удаление неудаляемых приложений и руководство по стилю Kotlin, уязвимости и рендеринг островов, 10,000 серверов и...
Понадобилось немногим более 6 лет на выпуск 300 дайджестов. Всем привет, меня зовут Леонид, и это я делаю эти статьи.