Новые и улучшенные возможности PHP 7.2.0

Опубликовано: 2018-03-03
Новый выпуск PHP 7.2.0 включает в себя множество замечательных дополнений. Он предлагает больше возможностей, новые улучшения и улучшенную функциональность. Это позволяет пользователю писать более качественный код и использовать несколько интересных функций языка, как никогда раньше. В этом посте мы рассмотрим новейшие аспекты, представленные в последней версии PHP.


Обновление предлагает множество новых улучшений. Он поставляется со многими функциями, которые обеспечивают лучшее кодирование. Новые возможности PHP 7.2.0 включают в себя:

  • Подсказка по вводу объекта
  • Подсчет различных несчетных предметов
  • Преобразование числовых ключей в приведения массива/объект
  • Расширение mcrypt удалено
  • Argon2 в хеше пароля
  • HashContext как объект
  • Улучшенные константы TLS для различных разумных значений
  • Новое расширение натрия

Как мы знаем, веб-разработчики обычно либо любят, либо ненавидят использование языка PHP. Всем, кто действительно любит использовать PHP, определенно понравится это новое решение для кодирования.

Если вы веб-разработчик, которому нравится работать с PHP, читайте дальше, пока мы обсуждаем самые важные новые функции обновления PHP 7.2.0.

Основные улучшения в PHP 7.2.0

Вот некоторые из основных улучшений в последнем обновлении PHP.

Решение для ошибки свойств черт

До выпуска PHP 7.2.0 существовала неисправленная ошибка свойства типажей. В последнем обновлении, если трейт определяет свойство, класс не может определить свойство с таким же именем, если только оно не более совместимо (то же начальное значение и видимость). В противном случае выдает фатальную ошибку.

Таким образом, в отличие от PHP 7 и PHP 7.1, теперь мы можем ожидать фатальную ошибку. Это поведение было исправлено в последнем обновлении PHP, и теперь оно работает так, как указано в документации PHP. Теперь можно провести строгое сравнение. Когда вы запустите скрипт в PHP 7.2, вы получите уведомление о фатальной ошибке.

Объявление возвращаемого типа

В недавнем обновлении PHP 7 добавлена ​​дополнительная поддержка объявлений типа возвращаемого значения. Так же, как объявления типа аргумента, этот тип объявления также указывает тип значения, которое, вероятно, будет возвращено функцией. Для объявления возвращаемого типа предлагаются те же типы, что и для объявлений типов аргументов.

В PHP 7.2.0 пользователь может использовать объявление возвращаемого типа в терминах типа данных объекта.

Более того, строгая типизация также оказывает влияние на объявления возвращаемого типа. Учитывая слабый режим по умолчанию, все возвращаемые значения приводятся к точному типу (в случае, если они разные и уже не относятся к этому типу). Однако в строгом режиме все возвращаемые значения должны быть точного/правильного типа. В противном случае будет получено сообщение об ошибке TypeError .

Однако дочерний метод должен соответствовать объявлению возвращаемого типа с объявлением родительского метода, когда вы переопределяете родительский метод. Но если тип возвращаемого значения не определен родительским методом, то его может определить дочерний метод.

Выражения возврата генератора

Эта функция PHP основана на функциональности, выпущенной в PHP 5.5, которая называется функциональностью генератора. Это позволяет использовать оператор return в генераторе и позволяет вернуть окончательное выражение. Однако возврат по ссылке ограничен. Значение можно получить с помощью нового метода генератора « getReturn()» , который используется только тогда, когда генератор завершает получение значений.

Тем не менее, возможность явно возвращать конечное значение с помощью генератора, безусловно, полезная способность. Это связано с тем, что он позволяет полностью возвращать окончательное значение генератором, что может быть, в частности, обработано клиентским кодом, выполняющим генератор. Для сравнения, это намного проще, чем заставлять клиентский код сначала проверять, получено ли окончательное значение или нет, а затем обрабатывать значение конкретно.

Параметры сеанса

Session_start() теперь распознает множество параметров, которые переопределяют различные директивы конфигурации сеанса, установленные в php.ini.

Эти параметры также были расширены, чтобы упростить session.lazy_write, который остается включенным по умолчанию и заставляет PHP перезаписывать любой файл сеанса только с изменением данных сеанса и read_and_close . Это параметр, который можно передать только в session_start() , чтобы подтвердить, что данные сеанса должны быть прочитаны, а затем сеанс должен быть немедленно закрыт, оставаясь неизменным.

Улучшения безопасности в PHP 7.2.0

Вот последние улучшения безопасности, реализованные в PHP 7.2.0.

Алгоритм Argon 2 в хэше пароля

Argon 2, победитель конкурса хеширования паролей в 2005 году, представляет собой надежный алгоритм хеширования. Argon2 находится в процессе признания универсальным интернет-стандартом. В настоящее время этот алгоритм считается более экономичным и безопасным, чем Bcrypt, еще один алгоритм хеширования. Недавно включенный Argon2 можно использовать с помощью функции password_hash().

В то время как Bcrypt учитывает только один стоимостной фактор, новый Argon2 учитывает следующие три стоимостных фактора:

  1. Стоимость времени - определяет количество итераций алгоритма хеширования.
  2. Стоимость памяти — определяет числа KiB, которые должны использоваться во время хеширования.
  3. Фактор параллелизма — устанавливает количество параллельных потоков, которые будут использоваться во время хеширования.

Факторы стоимости по умолчанию определяются тремя новыми константами следующим образом:

  • ПАРОЛЬ_ARGON2_DEFAULT_TIME_COST
  • ПАРОЛЬ_ARGON2_DEFAULT_MEMORY_COST
  • PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sodium заменяет Mcyrpt

Еще одним важным улучшением в PHP 7.2.0 является удаление обычной криптографической библиотеки Mcrypt из ядра PHP и добавление Libsodium.

Mcrypt считался заброшенным ПО и ограничивал развитие языка. Вот почему он был заменен на Libsodium в PHP 7.2.0. Libsodium — это передовая криптографическая библиотека, которая обеспечивает аутентичное шифрование наряду с эффективной криптографией на основе эллиптических кривых.

Libsodium состоит из тщательно отобранных алгоритмов, реализованных экспертами по безопасности для предотвращения уязвимостей сторонних каналов. Другими словами, Libsodium — это межъязыковая и кроссплатформенная библиотека для расшифровки, шифрования, хеширования паролей, подписи и многого другого.


Устаревшие возможности и функции

Ниже приведены некоторые из устаревших функций и возможностей PHP 7.2.0, которые, как ожидается, будут удалены до выпуска PHP 8.0.

Gmp_random() воспринимается как функция, зависящая от платформы, и, скорее всего, она устарела. Вместо этого будут использоваться gmp_random_rage() и gmp_random_bits() .

(unset) приведение — это еще одно выражение, которое обычно возвращает null и, следовательно, считается бесполезным.

Every() используется для перебора foreach() как массива, но foreach() предпочтительнее из-за его более высокой скорости.

spl_autoload_register в PHP 5.1 заменил функцию _autoload . Но теперь, скорее всего, произойдет устаревание, когда функция встретится во время компиляции.

mbstring .fucc_overload также считается устаревшим.

Функция assert() подтверждает данное утверждение и предпринимает адекватные действия, если результат FALSE . Использование assert() со строковыми аргументами будет объявлено устаревшим, поскольку оно вызывает уязвимость RCE.

Переменная $php_errormsg создается в локальной области видимости при получении нефатальной ошибки. Но теперь, с выпусками PHP 7.2.0, вместо них будут использоваться error_clear_last и error_get_last .

$errcontext, скорее всего, станет устаревшим, поскольку эта функциональность вызывает проблемы с оптимизацией. Поскольку $errcontext используется для изменения всех объектов и ссылок в текущей области видимости, эта функция почти не используется.

Create_function() имеет много проблем с безопасностью. Кроме того, у него также есть проблемы с использованием памяти и плохой производительностью.

Почему разработчик WordPress должен использовать PHP 7.2.0?

Недавние обновления PHP привнесли новые функции и улучшенные меры безопасности. Это может включать в себя такие факторы, как современная криптография, дополнения к основным функциям и более высокая скорость загрузки для различных сайтов.

Преимущества использования PHP

PHP — язык с высокой степенью совместимости, который можно использовать почти со всеми глобальными стандартами баз данных и серверов (например, PostgreSQL, MySQL, Sybase, Oracle, Microsoft SQL Server и Informix). Он предлагает высокую производительность, поддерживаемую сообществом с открытым исходным кодом.

Он используется для различных целей, таких как создание файлов и динамических страниц. PHP позволяет вам управлять и хранить информацию в базе данных сайта. Он позволяет пользователям шифровать данные с помощью функций безопасности и ограничивает несанкционированный доступ к веб-сайтам.

PHP используется многими известными веб-сайтами, такими как Yahoo, Facebook и Wikipedia.

Что еще более важно, последнее обновление PHP 7.2.0 предлагает важные улучшения безопасности, новые интересные функции и улучшения производительности.

Производительность PHP 7.2.0

Согласно бенчмаркам Phoenix, PHP 7.2.0 на 13% быстрее, чем 7.1, и почти на 20% быстрее, чем 7.0. По сравнению с PHP 2.6 (по-прежнему используется 40% пользователей PHP), он почти на 25% быстрее.

Есть много тестов, которые подтверждают эту статистику и выводы. Официальный тест PHP показывает, что PHP 7 вдвое эффективнее и вдвое быстрее, чем 5.6. PHP 7 имеет вдвое меньшую задержку. Кроме того, другие тесты, такие как Kinsta, предполагают, что PHP 7 может быть в три раза быстрее, чем предыдущие версии.

Как обсуждалось выше, основной причиной повышения производительности PHP 7.2.0 является включение расширенных функций и отказ от старых функций. Именно поэтому эта версия PHP идеально подходит для пользователей WordPress. Однако разработчики должны проверить код и обновить устаревшие функции, чтобы убедиться, что все совместимо.

Поддержка безопасности PHP 7.2.0

PHP 7.2.0 больше не предлагает поддержку безопасности. Однако критически важная поддержка будет по-прежнему доступна до конца 2018 года. Сообщество PHP больше не предлагает поддержку по незначительным проблемам и ошибкам. Хорошей новостью является то, что последнее обновление PHP 7.2.0 обеспечит правильную работу расширенных обновлений безопасности, а проект будет постоянно поддерживаться сообществом PHP.

Libsodium — это самая важная и наиболее улучшенная функция, перенесенная из старого PHP в PHP 7.2.0. К счастью, Libsodium очень легко обновить.

Если вы планируете обновиться до PHP 7.2.0, убедитесь, что ваш код состоит из интеграционных и модульных тестов. Такие тесты помогут выявить любые проблемы, связанные с приложением, до того, как они проявятся как ошибка в реальной среде.

В двух словах
PHP 7.2.0, безусловно, является серьезным обновлением по сравнению с предыдущими версиями, такими как PHP 5.6. При обновлении кода с PHP 5.6 до PHP 7 вы можете столкнуться с некоторыми несовместимостями как в библиотеках, от которых зависит код, так и в самом коде. Однако преимущества перехода на PHP 7.2 окупят ваши усилия.

Поскольку PHP 7.2 намного быстрее, чем более старые версии PHP, это позволяет пользователю предлагать улучшенные услуги пользователям своего веб-сайта за счет внедрения расширенных кодов языка PHP.

Итак, вы готовы перейти на новый PHP 7.2? Если вы еще не обновили его, самое время начать переход. Пришло время проверить коды и обновить скрипты.

Дайте нам знать, как вы нашли новые улучшенные возможности и функции PHP 7.2.0 в разделе комментариев ниже!