PHP-Дайджест № 159 (17 июня – 1 июля 2019)


    Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 alpha 2, BeerPHP, обзор свежих RFC из PHP Internals, включая Strict operators directive, порция полезных инструментов, видео и многое другое.

    Приятного чтения!



    Новости и релизы



    PHP Internals


    • [RFC] Normalize arrays' «auto-increment» value on copy on write — Предлагается сбрасывать значение “автоинкремента” при копировании массива, так, как если при копировании новый пустой массив был бы по одному заполнен элементами из старого.
      Скрытый текст
      $array = [0, 1, 2, 3];
      unset($array[3], $array[2]);
      $arrayCopy = $array;
      $arrayCopy[] = 2;
      
      // Если предложение будет принято, то следующее выражение будет истинно.
      // А на данный момент массивы не эквивалентны.
      assert($arrayCopy === [0, 1, 2]);
      
    • [RFC] Strict operators directive — PHP производит неявное преобразование типов для большинства операторов. И поскольку правила конвертации довольно сложные, то часто это может приводить к непредсказуемым результатам. В этом RFC предлагается ввести новую директиву strict_operators, которая ограничит преобразования типов и позволит бросать ошибку TypeError для несовместимых операндов. Документ очень подробный и описывает множество примеров, рекомендую просмотреть весь. Также директива меняет поведение конструкции switch.
    • [RFC] Deprecations for PHP 7.4 — Ещё пачку функциональностей предлагается объявить устаревшими в 7.4 и затем удалить в 8.0. Из интересного:
        • Cейчас в implode() аргументы можно передавать в любом порядке – предлагается оставить только канонический implode(string $glue, array $pieces);
        • Вместо float можно использовать тип real – последний будет убран.
    • [RFC] Add str begin and end functions — Предлагается добавить функции str_begins(), str_ibegins(), str_ends(), str_iends(), mb_str_begins(), mb_str_ibegins(), mb_str_ends(), и mb_str_iends().
    • Для репозитория php-src добавили пайплайн в Azure DevOps.
    • audio PHP Internals News #15 — Об улучшениях base_convert() с Scott Dutton.
    • audio PHP Internals News #16 — С Joe Watkins об [RFC] Unbundle ext/recode.

    Инструменты



    Symfony



    Laravel



    Yii


    • cebe/yii2-app-api — Шаблон приложения на Yii2 для быстрого создания API на основе спеки OpenAPI.

    Async PHP



    Материалы для обучения



    Спасибо за внимание!

    Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
    Вопросы и предложения пишите на почту или в твиттер.

    Больше новостей и комментариев в Telegram-канале PHP Digest.

    Прислать ссылку
    Поиск ссылок по всем дайджестам
    Предыдущий выпуск: PHP-Дайджест № 158

    • +56
    • 13,3k
    • 7
    Поделиться публикацией

    Похожие публикации

    Комментарии 7

      +2

      Спасибо, за подборку!


      [RFC] Normalize arrays' «auto-increment» value on copy on write

      Не знал о такой особенности, а ведь можно убить не мало времени в поисках причины не равенства.

        +1
        Ну вообще-то такое сравнение делать не правильно лучше брать какой-нибудь json_encode, хотя бывает что и порядок при сравнениии не важен. Я бы вообще запретил сравнивание массивов, жалко линтеры до сих пор это не могут.
          +9
          В PhpStorm подсветку такого можно сделать:


          Да и в любых консольных инструментах не сложно при желании.
            +2
            В общем случае JSON не гарантирует, что ключи будут в том же порядке.
            Имхо, лучше проверять на пустоту array_diff или array_diff_assoc.
              +3
              Не всегда применимо: например, если элементы повторяются.
              php > var_dump(array_diff([1,2,2],[2,1,1]));
              array(0) {
              }

          +1
          Спасибо за дайджест!
            +1
            pronskiy спасибо за дайджест!

            Мы в Санкт-Петербурге по наводке из статьи решили попробовать с организацией BeerPHP, репа в гите уже появилась, поэтому будем рады всем питерским php-кодерам ;)

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое