Релиз языка программирования PHP 5.6.0
28 августа 2014 года
Представлен новый значительный релиз языка программирования PHP 5.6.0. В версии PHP 5.6.0 добавлены константные скалярные выражения, функции с переменным числом аргументов, импорт функций и констант при помощи оператора use, оператор возведения в степень, интерактивный отладчик phpdbg. Следующим шагом развития языка PHP станет воплощение идей по существенному увеличению производительности движка Zend Engine и изменению методов работы с памятью, развиваемых в рамках экспериментальной ветки PHPNG.
Ключевые новшества:
- Константные скалярные выражения (constant scalar expressions), допускающие применение операций над числовыми или строковыми литералами и константами в контексте, предусмотренном для статических значений, таком как определение констант или значений по умолчанию аргументов функций. Например, "const ONE = 1; const TWO = ONE + 1;"
- Функции с переменным числом аргументов ( Variadic function), при определении которых явно не указывается число передаваемых аргументов. Например, функцию "function f($req, $opt = null, ...$params)" можно вызывать как f(1, 2), f(1, 2, 3, 4, 5) и т.п., где $req является обязательным аргументом, $opt - опциональным, а все дополнительные аргументы передаются в форме массива $params.
- Распаковка массивов или перечисляемых объектов в вид набора аргументов при вызове функции, используя оператор "...". Например, "$operators = [2, 3]; echo add(1, ...$operators);", где add является функцией трёх аргументов;
- Возможность использования оператора use для импорта функций и констант, в дополнение к импорту классов. Например, "namespace { use function Name\\Space\\f;...." для импорта в текущее пространство имён функции f, определённой в пространстве имён Name\\Space;
- Новый интерактивный отладчик phpdbg, выполненный в форме модуля SAPI;
- Возможность повторного использования ввода php://input, который теперь может быть переоткрыт и прочитан более одного раза. Изменение также привело к значительному сокращению потребления памяти при обработке данных, переданных через метод POST. Переменная $HTTP_RAW_POST_DATA причислена к устаревшим возможностям;
- Для объектов GMP (Архивная копия от 26 июля 2020 на Wayback Machine) обеспечена возможность перегрузки оператора и приведения скалярных типов;
- Поддержка загрузки файлов размером больше 2GiB;
- Добавлен новый математический оператор "**", применяемый для возведения в степень. Например, "$a ** $b" - возвести $a в степень $b;
- Улучшение поддержки SSL/TLS. В частности, в расширении OpenSSL добавлена возможность извлечения и проверки подписи (fingerprint) сертификатов. Для извлечения подписи из сертификатов X.509 добавлена функция openssl_x509_fingerprint(). Для SSL-потоков добавлены две контекстные опции: capture_peer_cert для захвата сертификата X.509 и peer_fingerprint для проверки его соответствия заданной подписи. Кроме того, добавлена поддержка выбора криптографических методов, таких как SSLv3 и TLS, через установку контекстной опции crypto_method, поддерживающей значения STREAM_CRYPTO_METHOD_SSLv2_CLIENT, STREAM_CRYPTO_METHOD_SSLv3_CLIENT, STREAM_CRYPTO_METHOD_SSLv23_CLIENT (по умолчанию) и STREAM_CRYPTO_METHOD_TLS_CLIENT;
- Поддержка алгоритма хэширования gost-crypto;
- Добавлен новый скрытый метод __debugInfo(), предоставляющий дополнительную отладочную информацию для объекта;
- В FPM SAPI реализована опция конфигурации clear_env для очистки переменных окружения;
- Новые функции hash_equals() и opcache_is_script_cached();
- Упрощена обработка кодировки на выходе через использование в качестве кодировки по умолчанию значения default_charset;
- В расширение mysqlnd добавлен новый метод извлечения данных, примечательный меньшим потреблением памяти за счёт большего числа операций копирования блоков памяти;
- В расширение PCRE добавлена поддержка маркеров (Архивная копия от 28 ноября 2021 на Wayback Machine);
- В расширение Pgsql добавлена поддержка выполнения запросов и соединений в асинхронном режиме;
- Изменения, нарушающие совместимость:
- Ключи массива не могут быть перезаписаны при определении массива в качестве свойства класса с использованием литерала array;
- Обеспечена более строгая проверка синтаксиса JSON в функции json_decode();
- Обвязки для потоков теперь по умолчанию выполняют верификацию сертификата и имени хоста пира при использовании SSL/TLS;
- Все ресурсы GMP теперь являются объектами;
- Расширение mcrypt теперь требует указания корректных ключей и векторов инициализации.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.