Релиз PHP 7.3: перевод на PCRE2 и многострочная вставка

Представлена финальная версия языка программирования PHP 7.3. Разработчики включили в неё новые функции для синтаксиса, обновили расширения и исключения, а также прекратили поддержку некоторых совместимых элементов.

Нововведения в синтаксис PHP 7.3

  • Появилась поддержка назначения ссылок в list (). Для присвоения можно использовать синтаксис вида list ($a, &$b) = $array; вместо $a = $array[0]; $b =& $array[1];. А вместо list () допускается применение квадратных скобок: [$a, &$b] = $array;.
  • В вызовах функций и методов теперь можно оставлять запятые в конце списка аргументов. Например, unset ($foo, $bar, $baz,).
  • В новой сборке появилась возможность гибко вставлять многострочные блоки без обязательного перевода строк. Выравнивание допускается с помощью отступов.
  • В выражении instanceof в роли первого операнда можно указывать литералы. Результат всегда будет FALSE.

Расширения и исключения новой версии

  • Расширение PCRE теперь переведено на ветку PCRE2.
  • В Date добавили метод DateTime::createFromImmutable ().
  • В функцию imagecreatefromstring () расширения GD добавлена возможность создать изображения в формате WebP.
  • LDAP поддерживает параметр serverctrls для отправки на сервер дополнительных сообщений в большинстве функции, вроде ldap_add и ldap_read. В функции ldap_parse_result появилась возможность получать ответы от сервера. Также реализована поддержка режимов LDAP_OPT_SERVER_CONTROLS и LDAP_OPT_CLIENT_CONTROLS в функциях ldap_get_option и ldap_set_option.
  • Появилось новое исключение CompileError, которое является наследником ParseError. Оно создаёт перехватываемое событие CompileError для некоторых типов ошибок. Это позволяет заменить FatalError.

Дополнения в PHP 7.3

  • Разработчики повысили производительность дополнения MBString и добавили полноценные средства для манипуляций с регистром символов. В функциях mb_ereg_*() добавлена поддержка именованного захвата элементов, а вызовы mbereg_*() теперь считаются устаревшими. Вместо них используются corresponding mb_ereg_*().
  • В заголовке страницы phpinfo () отображается переменная PHP_VERSION.
  • В SAPI-модуле FPM появились новые глобальные опции log_limit и log_buffering. Первая ограничивает размер строки в логе, а вторая позволяет записывать данные в лог без буферизации. Дополнительно появилась функция decorate_workers_output, которая отключает декорирование вывода от рабочих процессов при активации режима catch_workers_output.
  • Появились функции hrtime (), которая выводит значения времени по данным монотонного таймера, и net_get_interfaces (), которая отслеживает доступность сетевых интерфейсов.
  • Утилита ext_skel теперь не требует дополнительных зависимостей и работает в том числе на Windows.

Совместимость и стандартизация

  • Определение имён констант не чувствительных к регистру теперь объявлено устаревшим.
  • Поддержка платформы BeOS прекращена.
  • Открытие файлов в Windows теперь соответствуют поведению операций в Unix. Это позволяет удалять открытые файлы.

Полный список изменений доступен на официальном сайте.

Год назад, 3 декабря 2017 года, вышло предыдущее обновление PHP под номером 7.2. В нём основной акцент был сделан на повышении безопасности и улучшении работы со структурами данных.

tproger.ru