PHP 5.6: Основные нововведения
PHP 5.6 — последний насыщенный минор ветки 5.x до PHP 7: вариадические параметры, распаковка ...$args в вызовах, оператор **, импорт use function / use const, константные выражения в объявлениях, отладчик phpdbg. Для миграции важны приоритеты **, строже становятся некоторые сценарии с json, TLS и крипторасширениями.
Хаб: migration56.
Содержание
- Вариадика
- Распаковка аргументов
- Оператор
** use function/use const- Константные выражения
- phpdbg
- Практические рецепты
- Обратная несовместимость
- Deprecated
- Прочее
Вариадика
function sum($first, ...$rest)
{
return $first + array_sum($rest);
}
Распаковка аргументов
$args = array(1, 2, 3);
call_user_func_array('sprintf', array_merge(array('%d-%d-%d'), $args));
// в 5.6 проще:
echo sprintf('%d-%d-%d', ...$args);
Оператор **
Правоассоциативен: 2 ** 3 ** 2 читается как 2 ** (3 ** 2). Перепроверьте старые выражения с pow().
use function / use const
Явный импорт функций и констант из пространства имён рядом с классами.
Константные выражения
Константы класса и значения по умолчанию свойств могут использовать допустимые compile-time выражения — меньше «магических» чисел.
phpdbg
Интерактивная отладка CLI-скриптов; для веба по-прежнему полагаются на Xdebug и логи.
Практические рецепты
Замените громоздкий call_user_func_array на ... там, где это уместно. Для сравнения MAC используйте hash_equals() (появилась в 5.6).
Обратная несовместимость
Подробно: migration56 incompatible — ** и унарные операторы, json_decode, сигнатуры mcrypt/gd/openssl, foreach по свойствам, ужесточение проверки TLS.
Deprecated
$HTTP_RAW_POST_DATA и ряд настроек — migration56 deprecated.
Прочее
Проверка узла и цепочки сертификатов для исходящих HTTPS становится менее терпимой к ошибкам конфигурации.
Итог
После стабилизации на 5.6 логично планировать переход на PHP 7.0+: типы, Throwable, производительность — дальше по этой серии гайдов.