International PHP Conference Berlin 2025

Изменения, которые ломают обратную совместимость

Date

У метода DateTime::createFromImmutable() теперь предварительный возвращаемый тип static, ранее возвращаемый тип был DateTime.

У метода DateTimeImmutable::createFromMutable() теперь предварительный возвращаемый тип static, ранее возвращаемый тип был DateTimeImmutable.

Символы number в относительных форматах больше не принимают несколько знаков, например, +-2.

ODBC

Модуль ODBC теперь экранирует имя пользователя и пароль в случае, если передаётся строка соединения вместе с именем пользователя/паролем, тогда строка соединения будет изменена. Раньше при использовании пользовательских значений, нуждающихся в экранировании, могли сгенерировать неправильную строку соединения или вставить значения из данных, полученных от пользователя. Правила экранирования должны быть идентичны поведению .NET BCL DbConnectionOptions.

PDO_ODBC

Модуль PDO_ODBC также экранирует имя пользователя и пароль при передаче строки подключения. Дополнительные сведения смотрите в разделе изменение модуля ODBC.

Стандартные функции

Функция glob() теперь возвращает пустой массив (array), если все пути находятся вне пределов директории, определённой в open_basedir. Ранее функция возвращала false. Более того, предупреждение теперь выдаётся, даже если только некоторые пути ограничены с помощью директивы open_basedir.

Метод FilesystemIterator::__construct(): до версии PHP 8.2.0 константа FilesystemIterator::SKIP_DOTS была установлена всегда и не могла быть отключена. Для сохранения прежнего поведения константа должна быть явно установлена при использовании параметра flags. Значение по умолчанию параметра flags не было изменено.

Функции strtolower(), strtoupper(), stristr(), stripos(), strripos(), lcfirst(), ucfirst(), ucwords() и str_ireplace() больше не чувствительны к локализации. Теперь они выполняют преобразование регистра ASCII, как если бы локаль была "C". Локализованные версии этих функций доступны в модуле MBString. Более того, функция array_change_key_case() и сортировка с помощью SORT_FLAG_CASE теперь также используют преобразование регистра ASCII.

Функция str_split() теперь возвращает пустой массив (array), если была вызвана с пустой строки (string). Ранее она возвращала массив с одной пустой строкой. На функцию mb_str_split() это изменение не влияет, так как она уже работала подобным образом.

Функции ksort() и krsort() теперь выполняют сравнение числовых строк при SORT_REGULAR, используя стандартные правила PHP 8.

Функция var_export() больше не опускает ведущий обратный слеш для экспортируемых классов, т.е. они теперь полностью квалифицированы.

Стандартная библиотека PHP (SPL)

Следующие методы теперь усиливают свою сигнатуру:

У метода SplFileObject::hasChildren() теперь предварительный возвращаемый тип false, ранее он был bool.

У метода SplFileObject::getChildren() теперь предварительный возвращаемый тип null, ранее он был ?RecursiveIterator.

Класс GlobIterator теперь возвращает пустой массив (array), если все пути находятся вне пределов директории, заданной в open_basedir. Ранее он возвращал false. Более того, теперь выдаётся предупреждение, даже если только некоторые из путей находятся за пределами open_basedir.

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top