## Другие изменения

### Замечания и предупреждения при выполнении арифметических операций с некорректными строками

Новые ошибки уровней `E_WARNING` и `E_NOTICE` были добавлены при использовании некорректных строк с операторами, ожидающими числа (`+` `-` `*` `/` `**` `%` `<<` `>>` `|` `&` `^`) и их эквивалентами с присваиванием. Ошибка уровня `E_NOTICE` выдаётся, когда строка начинается с цифр, но далее содержит не цифровые символы, и ошибка уровня `E_WARNING` выдаётся тогда, когда строка вообще не содержит цифр.

    <?php
    '1b' + 'что-то';

Результат выполнения приведённого примера:

    Notice: A non well formed numeric value encountered in %s on line %d
    Warning: A non-numeric value encountered in %s on line %d

### Предупреждение при переполнении экранированной восьмеричной последовательности

Ранее 3-октетная восьмеричная строка переполнялась никому ничего не сообщая. Теперь при переполнении будет вызвана ошибка уровня `E_WARNING`.

    <?php
    var_dump("\500");

Результат выполнения приведённого примера:

    Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
    string(1) "@"

### Исправлена несогласованность `$this`

В то время как `$this` считается специальной переменной в PHP, ей не хватало специальных проверок, что её не используют в качестве переменной и не переопределили. Теперь использовать `$this` в качестве пользовательской переменной запрещено. Также запрещено присваивать ей значение и использовать в глобальном пространстве имён.

### Генерация идентификаторов сессий без хеширования

Идентификаторы сессий больше не хешируются во время создания. Вместе с этим удалены следующие четыре параметра из ini-файла:

- `session.entropy_file`
- `session.entropy_length`
- `session.hash_function`
- `session.hash_bits_per_character`

И добавлены два других:

- `session.sid_length` - определяет длину идентификатора сессии. По умолчанию используется 32 символа для обеспечения обратной совместимости.
- `session.sid_bits_per_character` - определяет количество бит на каждый символ идентификатора (то есть можно увеличить количество доступных для использования в идентификаторе символов). Для обратной совместимости по умолчанию используется 4 бита.

### Изменения в обработке INI-файлов

`precision`

  Если установлено в -1, то будет использован режим dtoa. Значение по умолчанию 14.

`serialize_precision`

  Если установлено в -1, то будет использован режим dtoa. Теперь значение по умолчанию -1.

`gd.jpeg_ignore_warning`

  Значение по умолчанию для этой настройки php.ini изменено на 1, так что, по умолчанию, предупреждения libjpeg будут игнорироваться.

`opcache.enable_cli`

  В PHP 7.1.2 значение по умолчанию для этой настройки php.ini изменено на 1 (включено), а в PHP 7.1.7 возвращено значение 0 (выключено)

### Генерация идентификаторов сессий только с помощью CSPRNG

Идентификаторы сессий теперь создаются только с помощью CSPRNG.

### Более информативное сообщение TypeError, если допустим `null`

Теперь исключение TypeError для проверок типа arg_info предоставляет более информативное сообщение об ошибке. Если тип параметра или возвращаемое значение может быть `null` (либо имеет значение `null` по умолчанию или имеет обнуляемый тип), то теперь в сообщении будет упомянуто "must be ... or null" или "must ... or be null."

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open