PHP 8.1.28 Released!

Прочие изменения

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

Новые ошибки уровней 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."

add a note

User Contributed Notes 1 note

up
8
Ta7To7
6 years ago
Note that using Incrementing/Decrementing operators on string is legal
<?php
$str
= "";
echo ++
$str; // output: 1
?>
To Top