Новая функциональность
 
  Объявления скалярных типов
  
   Скалярные типы объявляют в двух режимах:
   нестрогом, в котором PHP работает по умолчанию, и строгом.
   Теперь как в нестрогом, так и в строгом режимах разрешается задавать
   следующие типы параметров:
   строки (string), целые числа (int), числа с плавающей точкой
   (float) и логические значения (bool). Перечисленные типы дополняют
   другие типы, которые появились в PHP 5: имена классов, интерфейсов,
   массивы (array) и callable.
  
  
  
   Для установки строгого режима, в самом начале файла необходимо поместить одну
   директиву declare. Это означает, что строгость объявления скалярных типов
   работает на уровне файла и
   не затрагивает весь остальной код. Эта директива затрагивает не только объявления
   параметров, но и возвращаемые значения функций (смотрите
   объявления возвращаемого типа),
   встроенные функции PHP и функции загруженных модулей.
  
  
   Подробную документацию и примеры использования читайте в разделе
   декларация типов.
  
  
 
 
  Оператор объединения с null
  
   Был добавлен оператор объединения с null (??), являющийся
   синтаксическим сахаром для достаточно распространённого действия, когда совместно
   используются тернарный оператор и функция isset(). Он возвращает
   первый операнд, если он задан и не равен null, а в обратном случае возвращает второй
   операнд.
  
  
  
  
 
  Оператор spaceship (космический корабль)
  
   Этот оператор предназначен для сравнения двух выражений. Он возвращает -1, 0 или 1
   если $a, соответственно, меньше, равно или больше чем
   $b. Сравнение производится в соответствии с
   правилами сравнения типов PHP.
  
  
  
  
 
  Определение констант массивов с помощью define()
  
   Можно определить константу типа array с помощью функции
   define(). В PHP 5.6 такие константы можно было задавать только с
   помощью const.
  
  
  
 
  Анонимные классы
  
   Была добавлена поддержка анонимных классов с помощью new class.
   Их можно использовать тогда, когда нужен одноразовый класс и создавать полноценный
   класс, а потом его объект не имеет смысла:
  
  
  
   Подробную документацию и примеры использования читайте в разделе про
   анонимные классы.
  
  
 
  Синтаксис экранирования кодовых точек Юникода
  
   Синтаксис принимает кодовую точку Юникода в шестнадцатеричном формате,
   которую записали в кодировке UTF-8 как строку в двойных кавычках или heredoc-синтаксисом,
   и выводит эту кодовую точку в формате UTF-8. Синтаксис примет каждую допустимую кодовую точку.
   Ведущие нули в шестнадцатеричной последовательности указывать необязательно.
  
  
  
 
  
  
   Closure::call() — более производительный
   и короткий способ временного связывания области действия объекта с замыканием
   и его вызовом.
  
  
  
 
  
  
   Эта функциональность обеспечивает более высокий уровень безопасности при десериализации
   объектов с непроверенными данными. Это позволяет предотвратить возможную инъекцию
   кода, позволяя разработчику использовать белый список классов для десериализации.
  
  
  
 
  
  
   Новый класс IntlChar добавляет новую функциональность в
   ICU. Класс определяет несколько статических методов и констант для манипулирования
   символами Unicode.
  
  
  
   Для работы с этим классом требуется установить модуль
   Intl.
  
  
 
  Ожидания
  
   Ожидания являются улучшенной,
   обратно совместимой версией старой функции assert().
   Они позволяют делать предположения с нулевой стоимостью в промышленном коде и
   предоставляют возможность выбрасывать пользовательские исключения в случае
   провала ожидания.
  
  
   Вместе тем, что старое API поддерживается, assert() теперь является
   языковой конструкцией, принимающей первым аргументом выражения, а не только
   строки (string) для оценки или логические значения (bool) для проверки.
  
  
  
   Подробное описание этого функционала, а также инструкции для его конфигурирования
   для тестовых и промышленных сред, можно найти на странице руководства, посвящённой
   функции assert().
  
  
 
  Групповые объявления use
  
   Классы, функции и константы импортируемые из одного и того же namespace,
   теперь можно группировать в одном операторе use.
  
  
  
 
  Выражение return в генераторах
  
   Эта функциональность добавлена к генераторам, введённым в PHP 5.5.
   Она позволяет использовать оператор return в генераторах в качестве
   окончательного возвращаемого значения (возврат по ссылке недопустим). Это значение можно
   извлечь с помощью нового метода Generator::getReturn(), который можно
   использовать только после того, как генератор вернул все сгенерированные значение.
  
  
  
   Явно получать конечное значение генератора полезно,
   поскольку разрешает клиентскому коду, который запустил генератор, получать и обрабатывать
   финальное значение генератора (возможно, из какой-то формы сопрограммных вычислений).
   Это значительно проще, чем заставлять клиентский код проверять, последнее ли значение вернул генератор,
   а затем, если это так, отдельно обрабатывать значение.
  
  
 
  Делегация генератора
  
   Теперь генераторы за счёт конструкции yield from умеют автоматически делегировать
   выдачу значений другому генератору, Traversable-объекту
   или массиву без написания шаблонного кода во внешнем генераторе.
  
  
  
 
  Функция целочисленного деления intdiv()
  
   Новая функция intdiv() выполняет целочисленное деление
   операндов и возвращает результат деления.
  
  
  
 
  Опции сессий
  
   Теперь функция session_start() принимает массив опций, которые переопределят
   конфигурационные директивы сессии
   файла в php.ini.
  
  
   Опции также расширили включённой по умолчанию опцией
   session.lazy_write, которая говорит PHP,
   что файл сессии нужно перезаписывать, только если изменились данные сессии,
   и опцией read_and_close, которую можно задать только через
   функцию session_start(), чтобы PHP закрывал сессию сразу
   после прочтения данных сессии и не вносил в сессию каких-либо изменений.
  
  
   Приведём пример. Для установки директиве
   session.cache_limiter значения
   private и немедленному закрытию сессии после чтения данных сессии:
  
  
  
 
  
  
   Новая функция preg_replace_callback_array() помогает писать более
   чистый код, когда требуется вызвать функцию
   preg_replace_callback(). До PHP 7 при обработке
   отдельных регулярных выражений отдельными функциями приходилось для каждой такой
   обработки писать отдельный вызов функции.
  
  
   Теперь можно использовать одну функцию и передавать в неё ассоциативный массив,
   в котором ключи — регулярные выражения, а значения — функции обратного вызова.
  
  
 
  Функции CSPRNG
  
   Добавили две новые кросс-платформенные функции для генерации криптографически
   безопасных строк и целых чисел: random_bytes()
   и random_int().
  
  
 
  
   Функция list() теперь всегда распаковывает объекты,
   которые реализуют интерфейс ArrayAccess
  
  
   Раньше функция list() не гарантировала корректную обработку
   объектов, которые реализуют интерфейс ArrayAccess.
   Это исправили.
  
  
 
  Другие изменения
  
   - 
    
     Добавили возможность доступа к методам и свойствам класса при клонировании,
     то есть (clone $foo)->bar().