PHP-Дайджест № 180 (4 – 18 мая 2020)
Свежая подборка со ссылками на новости и материалы. В выпуске: 2 принятых, 2 отклоненных и 6 новых RFC предложений из PHP Internals, обзор PHP 8, порция полезных инструментов, онлайн мероприятия, видео, подкасты и многое другое.
Приятного чтения!
Новости и релизы
PHP Internals
- Объявлены релиз-менеджеры PHP 8 — Ими стали Sara Golemon (ex-HHVM/Hack, релиз-менеджер PHP 7.2) и Gabriel Caruso.
- [RFC] Locale-independent float to string cast — Принято предложение о приведении чисел с плавающей точкой к строке без учета локали. Вместо
3,14
будет3.14
, подробнее в канале. - [RFC] Add str_starts_with () and str_ends_with () functions — Вдогонку к str_contains () добавлены еще две функции:
str_starts_with()
иstr_ends_with()
. - [RFC] Match expression — Предложение отклонено. Одним из спорных моментов была возможность использовать блоки в выражении, однако автор считает, что без блоков пока в RFC смысла мало.
- [RFC] Guard statement — Предлагалось ввести ключевое слово
guard
для реализации, по сути, инвертированногоif
. Такая концепция есть в Swift, но из-за статической типизации там в ней больше смысла. Предложения отозвано автором. - [RFC] Conditional Return, Break, and Continue Statements — Предлагается добавить возможность вызовов вида
return if ($condition);
для раннего выхода из функцийСкрытый текстПохожий синтаксис широко используется в Ruby, но насколько это лучшеfunction divide($dividend, $divisor = null) { return if ($divisor === null || $divisor === 0); // or return 0 if ($divisor === null || $divisor === 0); return $dividend / $divisor; }
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-скриптов, когда запуск оптимизаций дольше, чем выполнение неоптимизированного кода.
А вот выполнить оптимизации без кеширования нельзя, что и предлагается реализовать. Такая возможность может быть полезна, когда запускается много долгоживущих скриптов и в условиях ограниченной памяти.
Инструменты
Symfony
Laravel
Async PHP
Материалы для обучения
Аудио/Видео
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 179