Релиз языка программирования PHP 5.6.0

Представлен новый значительный релиз языка программирования PHP 5.6.0. В версии PHP 5.6.0 добавлены константные скалярные выражения, функции с переменным числом аргументов, импорт функций и констант при помощи оператора use, оператор возведения в степень, интерактивный отладчик phpdbg. Следующим шагом развития языка PHP станет воплощение идей по существенному увеличению производительности движка Zend Engine и изменению методов работы с памятью, развиваемых в рамках экспериментальной ветки PHPNG. Ключевые новшества:

Константные скалярные выражения (constant scalar expressions), допускающие применение операций над числовыми или строковыми литералами и константами в контексте, предусмотренном для статических значений, таком как определение констант или значений по умолчанию аргументов функций. Например, «const ONE = 1; const TWO = ONE + 2;» Функции с переменным числом аргументов (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 обеспечена возможность перегрузки оператора и приведения скалярных типов; Поддержка загрузки файлов размером больше 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 добавлена поддержка маркеров; В расширение Pgsql добавлена поддержка выполнения запросов и соединений в асинхронном режиме; Изменения, нарушающие совместимость: Ключи массива не могут быть перезаписаны при определении массива в качестве свойства класса с использованием литерала array; Обеспечена более строгая проверка синтаксиса JSON в функции json_decode (); Обвязки для потоков теперь по умолчанию выполняют верификацию сертификата и имени хоста пира при использовании SSL/TLS; Все ресурсы GMP теперь являются объектами; Расширение mcrypt теперь требует указания корректных ключей и векторов инициализации.

© OpenNet