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