Another backward incompatible change, not mentioned in the docs, is that function `date_default_timezone_get()` no longer returns current time zone.
Prior to 8.2, this function returned:
- Time zone set by `date_default_timezone_set()` (if set).
- Time zone specified in `date.timezone` (if set).
- Current time zone, if none of above applies.
From 8.2 onward, if neither of the first two variants applies, this function returns UTC. This breaks scenarios where current time zone shall be used.
See <https://github.com/php/php-src/issues/11496> for discussion.Некомпатибилни промени воназад
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Некомпатибилни промени воназад
Референца за `migration82.incompatible.php` со подобрена типографија и навигација.
Некомпатибилни промени воназад
Датум
DateTime::createFromImmutable() DOMDocument::registerNodeClass() static, претходно беше DateTime.
DateTimeImmutable::createFromMutable() DOMDocument::registerNodeClass() 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()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во str_ireplace() веќе не се чувствителни на локализација. Тие сега вршат ASCII конверзија на буквите, како да е локализацијата "C". Локализирани верзии на овие функции се достапни во MBString екстензијата. Покрај тоа, array_change_key_case(), а сортирањето со
SORT_FLAG_CASE сега исто така користи ASCII конверзија на буквите.
str_split() враќа празно array за празно string сега. Претходно враќаше низа со една празна стринг запис. mb_str_split() не е погоден од оваа промена бидејќи веќе се однесуваше на овој начин.
ksort() and krsort() сега прави нумеричка споредба на низи под SORT_REGULAR користејќи ги стандардните правила на PHP 8 сега.
var_export() веќе не изоставува водечка коса црта за извезени класи, т.е. тие сега се целосно квалификувани.
Стандардна PHP библиотека (SPL)
Следниве методи сега ја наметнуваат својата сигнатура:
- SplFileInfo::_bad_state_ex()
- SplFileObject::setCsvControl()
- SplFileObject::fflush()
- SplFileObject::ftell()
- - Земи ред од датотека
- SplFileObject::fpassthru()
SplFileObject::hasChildren() DOMDocument::registerNodeClass() false, претходно беше bool.
SplFileObject::getChildren() DOMDocument::registerNodeClass() null, претходно беше ?RecursiveIterator.
GlobIterator сега враќа празно array ако сите патеки се ограничени од open_basedir. Претходно враќаше false. Покрај тоа, сега се емитува предупредување дури и ако само некои патеки се ограничени од
open_basedir.