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