Представлена финальная версия языка программирования 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. В нём основной акцент был сделан на повышении безопасности и улучшении работы со структурами данных.