PHP-Дайджест № 180 (4 – 18 мая 2020)

ronqojedzlearx2cqxq_yd617zq.jpeg

Свежая подборка со ссылками на новости и материалы. В выпуске: 2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия, видео, подкасты и многое другое.

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


f574e9991c42407b8fa789a66b854f8d.png Новости и релизы


c9ee7880391644e4aef6cc28ca681ab0.png PHP Internals


  • Объявлены релиз-менеджеры PHP 8 — Ими стали Sara Golemon (ex-HHVM/Hack, релиз-менеджер PHP 7.2) и Gabriel Caruso.
  • qnpg4d87ngmevnvwdg9vjxxa5i4.png[RFC] Locale-independent float to string cast — Принято предложение о приведении чисел с плавающей точкой к строке без учета локали. Вместо 3,14 будет 3.14, подробнее в канале.
  • qnpg4d87ngmevnvwdg9vjxxa5i4.png[RFC] Add str_starts_with () and str_ends_with () functions — Вдогонку к str_contains () добавлены еще две функции: str_starts_with() и str_ends_with().
  • ptcdaj_hxxx_o0_jr9lnltwphuk.png[RFC] Match expression — Предложение отклонено. Одним из спорных моментов была возможность использовать блоки в выражении, однако автор считает, что без блоков пока в RFC смысла мало.
  • ptcdaj_hxxx_o0_jr9lnltwphuk.png[RFC] Guard statement — Предлагалось ввести ключевое слово guard для реализации, по сути, инвертированного if. Такая концепция есть в Swift, но из-за статической типизации там в ней больше смысла. Предложения отозвано автором.
  • [RFC] Conditional Return, Break, and Continue Statements — Предлагается добавить возможность вызовов вида return if ($condition); для раннего выхода из функций
    Скрытый текст
    function divide($dividend, $divisor = null) {
        return if ($divisor === null || $divisor === 0);
        // or
        return 0 if ($divisor === null || $divisor === 0);
    
        return $dividend / $divisor;
    }
    
    Похожий синтаксис широко используется в Ruby, но насколько это лучше if (condition) return;?
  • [RFC] Named Arguments — В PHP 8 предлагается добавить именованные аргументы, которые позволят передавать значения в функцию на основе имени параметра, а не его позиции.
    htmlspecialchars($string, double_encode: false);
    
    // вместо
    
    htmlspecialchars($string, ENT_COMPAT | ENT_HTML401 , ini_get("default_charset"), false);
    
    Подробнее в канале.
  • [RFC] <> Attribute — Новым атрибутом предлагается маркировать устаревшие методы/функции, параметры, свойства, константы. При попытке доступа к ним будет вызвана trigger_error().
    Скрытый текст
    >
    function test() {}
    
    class Foo {
        <>
        public function test() {}
    
        public function test2(<> $value) {}
    
        <>
        public $value;
    
        <>
        const FOO = 1;
    }
    
  • [RFC] Add CMS Support — Предлагается включить WordPress в ядро PHP добавить несколько новых криптографических функций согласно RFC-5652.
  • [RFC] Make sorting stable — Стандартные функции сортировки в PHP не являются стабильными. Это значит, что оригинальный порядок элементов с одинаковыми значениями не гарантируется (пример). Предлагается это исправить и сделать сортировки sort, rsort, usort, asort, arsort, uasort, ksort, krsort, uksort, array_multisort стабильными. Правда, при большом количестве одинаковых элементов такой фикс отразится на производительности (бенчмарк).
  • [RFC] Opcache optimization without any caching — Сейчас уже есть возможность использовать опкеш без выполнения оптимизаций (opcache.optimization_level=0) — это может быть полезно для CLI-скриптов, когда запуск оптимизаций дольше, чем выполнение неоптимизированного кода.
    А вот выполнить оптимизации без кеширования нельзя, что и предлагается реализовать. Такая возможность может быть полезна, когда запускается много долгоживущих скриптов и в условиях ограниченной памяти.


cf862d9072784d04b621238ec137f2ca.png Инструменты


96b65e92179a40f2bd1884549973ddd5.png Symfony


314bd0f0dfc54e3fa7f0c0daef1a2d25.png Laravel


732rpqll-yvu0hrtaw6yeism-de.png Async PHP


329bec7c1e914963a1c5d2f2bfe99995.png Материалы для обучения


8dcc236774104f8286a40ceaea553820.png Аудио/Видео

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

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

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

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

© Habrahabr.ru