Как и прежде, мы делаем упор на развитие технологий, а также на оптимизацию и стабильность работы используемых технологий.
На этот раз мы обновили PHP до последней стабильной версии 7.2 и хотим рассказать об изменениях. Конечно, по сравнению с версией 7.1 изменений не так много.
На первом месте стоят улучшения связанные с производительностью
С каждым обновлением, PHP становится всё стабильнее, экономичнее в использовании памяти и быстрее. Очередное обновление содержит несколько изменений, благодаря которым новая версия PHP 7.2 немного быстрее чем PHP 7.1.
Список изменений новой версии содержит следующие оптимизации производительности:
- В Opcache добавлена глобальная оптимизация на основе анализа потока данных с использованием SSA (Static single assignment form): Sparse Conditional Constant Propagation (SCCP), удаление мертвого кода (Dead Code Elimination — DCE) и удаление неиспользуемых локальных переменных.
- Оптимизирована работа встроенной функции in_array() с помощью поиска хеша в перевернутом массиве.
Обновления
- Добавлено новое криптографическое расширение Sodium. Был принят RFC: Make Libsodium a Core Extension, в котором предлагалось включить в ядро PHP библиотеку Libsodium, предоставляющую аутентифицированное шифрование, высокоскоростную эллиптическую криптографию и многое другое.
- В функции json_encode и json_decode добавлены опции JSON_INVALID_UTF8_IGNORE и JSON_INVALID_UTF8_SUBSTITUTE для игнорирования или замены некорректных последовательностей байтов UTF-8.
- Расширения теперь разрешено загружать в ini файлах по имени (extension=
). - Расширение mcrypt, объявленное устаревшим в PHP 7.1, было перемещено в PECL.
- Минимальные поддерживаемые версии Windows повышены до Windows 7 / Server 2008 R2
Устаревшие функции
- __autoload — данная магическая функция была заменена на spl_autoload_register в PHP 5.1, и теперь объявлена устаревшей
- $php_errormsg — переменная создавалась в локальном скопе при возникновении нефатальной ошибки, если опция track_errors была включена в ini-файле (отключена по умолчанию), и в этом случае ошибка не передавалась в обработчик ошибок.
- create_function() — функция по сути является тонкой оберткой над eval(), как результат является источником потенциальных угроз безопасности, очень медленная и использует много памяти в работе.
- mbstring.func_overload — это ini-настройка, позволяющая переопределить часть строковых функций их мультибайтовыми аналогами. Эта функция запрещена в некоторых библиотеках (например Symfony) и может вызывать проблемы при определенных условиях.
- (unset) cast — данное преобразование обращает результат в null. По сути выражение (unset)$x не несет никакого дополнительного смысла и может запутать, т.к. оно не эквивалентно функции unset($x).
- parse_str() без второго аргумента — это пережиток времен register_globals. Без передачи второго аргумента, функция присваивает полученные значения локальным переменным, что потенциально может быть небезопасным.
- gmp_random() — начиная с версии 5.6 появились функции gmp_random_bits() и gmp_random_range(), которые заменяют gmp_ramdom(), но имеют больший контроль над результатом.
- each() — аналог foreach, но значительно более медленный
- assert() со строковым аргументом — при передаче строкового значения в assert, над строкой выполняется eval, что является потенциальной угрозой безопасности приложения.
- Аргумент $errcontext в обработчиках ошибок — ранее в обработчик ошибок, заданный с помощью set_error_handler(), можно было передать $errcontext, содержащий массив всех локальных переменных на момент возникновения ошибки.
В новой версии PHP некоторые старые функции объявляются устаревшими, и начнут выбрасывать deprecated notice:
В общем, список изменений не такой внушительный как при переходе с PHP 5 на PHP 7, но всё-же как можно заметить, тенденция к улучшению производительности сохраняется, что не может радовать.
Далее продемонстрировано как можно включить PHP 7.2 у себя в панели управления хостингом.
Как и раньше, переключение версии осуществляется буквально парой кликов.
В панели управления хостингом перейдите в раздел WWW, далее заходим в подраздел WWW-домены из списка выбираем домен, на которым планируете установить PHP версии 7.2 и нажимаем клавишу Изменить. В появившемся окне в строке Версия PHP из списка выбираем PHP 7.2.2 (alt).