Существует новая версия PHP, которая добавляет несколько функций, в том числе новое расширение sodium, что делает PHP первым языком программирования, использующим современную криптографию в своей стандартной библиотеке.
Включение библиотеки Libsodium в ядро означает, что разработчикам больше не нужно использовать PECL для доступа к библиотеке или полагаться на openssl. Libsodium-это кроссплатформенная и межъязыковая библиотека для шифрования, дешифрования, подписей и хэширования паролей. Еще одно улучшение безопасности добавляет поддержку Argon 2 к функциям паролей в качестве безопасной альтернативы Bcrypt.
Новая версия PHP, 7.2.0, имеет другие улучшения, начиная с типов объектов.PHP 5 добавил возможность указывать типы аргументов в объявлении функции, чтобы указать, какой тип аргумента ожидается для передачи. Они известны как подсказки типа. PHP 7.2 расширил это, чтобы вы могли использовать тип данных объекта для подсказок типа, что означает, что вы можете объявить универсальный объект в качестве аргумента функции или метода.
Второе улучшение касается обработки пар ключ/значение. PHP использует этот тип данных для массивов и объектов и хранит их внутри с помощью хэш-таблиц. Однако у них есть разные ограничения на то, какие типы ключей они могут иметь, что приводит к возможности того, что при непосредственном изменении базовых хэш-таблиц массивы и объекты могут существовать с недопустимым внутренним состоянием. Новая версия преобразует ключи хэш-таблиц массивов или объектов по мере необходимости, преобразуя имена свойств числовых строк в объектах в целочисленные ключи массива и наоборот. Это будет означать, что недоступных свойств не будет.
Несчетные объекты теперь лучше обрабатываются. В предыдущих версиях, если вы вызывали функцию count() для скаляра или объекта, который не реализует счетный интерфейс, возвращалось значение 1, что потенциально скрывало ошибку. Новая версия возвращает предупреждение, если функция count() вызывается с параметром, который является скалярным, нулевым или объектом, который не реализует функцию Countable.
Хэш-контент-это еще одна область, на которую обратили внимание. В то время как объекты являются предпочтительной структурой для упаковки внутренних данных, расширение хэша является альтернативой. В этой версии непрозрачный ресурс преобразуется в непрозрачный объект, что означает, что существующий код должен продолжать функционировать.