После огромного перерыва в полгода таки решили провести новый микро-толк. Основным поводом послужил выход PHP 7.3, но были и другие новости для обсуждения.
Например, Microsoft решил перевести свой браузер Edge на базу Chromium и первые сборки должны появиться уже в начале 2019 года. Видимо не потянули разработку своего движка EdgeHTML. С одной стороны - больше совместимости, а с другой стороны - монополизация одним движком. Хотя фрагментация еще сохраняется. Из популярных браузеров — есть Firefox на базе движка Gecko, есть Safari на базе WebKit и есть куча браузеров (Opera, Chrome, Яндекс-Браузер и новоиспеченный Edge) на основе браузера Chromium с движком Blink.
Итак, переходя к основной новости — 6 декабря 2018 года вышел PHP 7.3.
Среди новых возможностей — следующие:
- улучшения синтаксиса Heredoc и Nowdoc, добавилась возможность использовать отступы;
- добавлено предупреждение (warning) при использовании
continue
внутриswitch
; - функции
json_encode()
иjson_decode()
будут бросать исключение в случае ошибки и наличия соответствующего флага; - теперь можно использовать запятую после последнего аргумента функции;
- добавлены функции
array_key_first()
иarray_key_last()
; - новая функция hrtime(), которая возвращает время высокой точности (high-resolution) и не зависит от системного времени;
- добавлена функция
is_countable()
для проверки на перечислимость, что может помочь обрабатывать ошибки вызоваcount()
на неперечислимых данных, которые добавились в PHP 7.2; - можно использовать ссылки в
list()
; - улучшена работа сборщика мусора, особенно с больши́м количеством объектов;
- движок регулярных выражений обновлен до PCRE2.
Подробный список всех изменений можно найти в PHP 7.3 upgrade notes или в руководстве по миграции с PHP 7.2 до 7.3.
Ну и раз уж зашла речь о новой версии PHP, то стоит упомянуть, что PHP 5.6 и PHP 7.0 уже официально не поддерживаются, а PHP 7.1 перешел в режим поддержки безопасности. А это в свою очередь сильно подталкивает к переходу на 7.2, а еще лучше — сразу на PHP 7.3.
Здесь интересно посмотреть статистику использования версий PHP:
При этом нужно иметь в виду, что статистика от Packagist покрывает только относительно новые проекты, которые используют composer, а статистика от Wordpress скорее всего имеет обратное покрытие, поэтому нужно рассматривать их совместно.
Кроме того интересно узнать планы на PHP 8, которые озвучил Zeev Suraski:
- JIT (возможно не улучшит типичные веб-сайты, но может позволить использовать PHP не только для веба и возможно откроет новые горизонты).
- Поддержка модели выполнения долгих асинхронных запросов. Ключевые слова здесь — это Node.js, ReactPHP и Swoole.
- FFI (Foreign Function Interface). Упростит связывание PHP с нативными библиотеками (искусственный интеллект, машинное обучение, нейронные сети и прочее).
- Поддержка предзагрузки (preloading). Подробнее — в этом RFC. Уже подтверждено, что это будет в PHP 7.4!
PHP 8 планируется к выходу в конце 2020 года.
И напоследок грустные новости о PHP FIG и стандартах PSR. Из PHP FIG уходит Symfony (кстати, не уверен, что оригинальный твит сохранился, кажется он уже удален) в след за Doctrine, Guzzle, Propel и Laravel. Так или иначе создатели фреймворков не довольны, что стандарты PSR порой не учитывают существующие реализации.
Предыдущий дайджест: Микро-толки — дайджест #9