Try using [$this, 'method_string'] in place of 'method_string' for functions like xml_set_element_handler, etc.
As in xml_set_element_handler($this-parser, [$this, 'method'], [$this, 'another_method']);
This is what the note about "callable" means--you need to reference the actual method in a callable way, not just use a string.Обележани функции
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Обележани функции
Референца за `migration84.deprecated.php` со подобрена типографија и навигација.
Обележани функции
PHP јадро
Имплицитно дозволен параметар
Типот на параметарот имплицитно се проширува за да прифати null
ако неговата стандардна вредност е null.
Следнава шифра:
<?php
function foo(T1 $a = null) {}<?php
function foo(T1|null $a = null) {}<?php
function foo(?T1 $a = null) {}Меѓутоа, ако таквата декларација на параметар е проследена со задолжителен параметар:
<?php
function foo(T1 $a, T2 $b = null, T3 $c) {}<?php
function foo(T1 $a, T2|null $b, T3 $c) {}<?php
function foo(T1 $a, ?T2 $b, T3 $c) {}Подигнување нула на негативен степен
Подигнувањето број на негативен степен е еквивалентно на земање на реципрочната вредност на бројот подигнат на позитивниот спротивен степен. Тоа е, 10-2 е исто како
1 / 102. Затоа, подигнувањето 0 на негативен степен одговара на делење со 0, т.е.
0-2 е исто како
1 / 02, или
1 / 0. Така, ова однесување е отфрлено.
Ова влијае на операторот за експоненцијација **
Пример #4 Споредување на вратената вредност на include pow() function.
Ако се посакуваат семантиките на IEEE 754, треба да се користи новиот fpow() function.
Користење на долна црта _ како име на класа
Именување на класа _ сега е отфрлено:
<?php
class _ {}Забелешка:
Класите чии ими започнуваат со подвлекување се not застарени:
<?php
class _MyClass {}
Пронајдете и отворете ја конфигурациската датотека на Apache. Стандардно, локацијата е како што следува: trigger_error() with
E_USER_ERROR
Повикување trigger_error() with
error_level еднакви на
E_USER_ERROR не е валидна опција
Таквите употреби треба да се заменат со фрлање исклучок или повикување exit(), што и да е посоодветно.
cURL
На CURLOPT_BINARYTRANSFER константата сега е застарена.
Датум
На DatePeriod::__construct(string $isostr, int $options = 0)
потписот е застарен. Користете DatePeriod::createFromISO8601String() instead.
На SUNFUNCS_RET_TIMESTAMP,
SUNFUNCS_RET_STRINGПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во SUNFUNCS_RET_DOUBLE константите сега се застарени. Ова произлегува од застарувањето на date_sunset() and
date_sunrise() функциите во PHP 8.1.0.
DBA
Поминување null or false to dba_key_split() сега е застарена. Секогаш би враќала false во тие случаи.
Хеш
Поминувањето невалидни опции на функциите за хеширање сега е застарено.
Меѓународен
Повикување intlcal_set() or IntlCalendar::setDateTime() со повеќе од два аргументи е застарено. Користете или (PHP 5 >= 5.5.0, PHP 7, PHP 8, PECL >= 3.0.0a1) or IntlCalendar::setDate() instead.
Повикување intlgregcal_create_instance() or без аргументи. Види исто така со повеќе од два аргументи е застарено. Користете или Ова беше отфрлено во корист на методите or IntlGregorianCalendar::createFromDate() instead.
LDAP
Повикување ldap_connect() со повеќе од два аргументи е застарено. Користете ldap_connect_wallet() instead.
Повикување ldap_exop() со повеќе од четири аргументи е застарено. Користете ldap_exop_sync() instead.
MySQLi
На mysqli_ping() функција и mysqli::ping() методот сега се застарени бидејќи функцијата за повторно поврзување беше отстранета во PHP 8.2.0.
На mysqli_kill() функција и
mysqli::kill() методот сега е застарен. Ако оваа функционалност е потребна SQL KILL команда може да се користи наместо тоа.
На mysqli_refresh() функција и
» MySQL Refresh методот сега е застарен. Ако оваа функционалност е потребна SQL FLUSH команда може да се користи наместо тоа. Сите MYSQLI_REFRESH_*
константи се исто така застарени.
Поминување на mode , како
mysqli_store_result() експлицитно е застарено. Бидејќи MYSQLI_STORE_RESULT_COPY_DATA константата се користеше само во комбинација со оваа функција, таа исто така е застарена.
PDO_PGSQL
Користењето на избегнати знаци прашалник (??) внатре во низи со долар-цитирање е застарено. Бидејќи PDO_PGSQL сега има свој SQL парсер со поддршка за низи со долар-цитирање, веќе не е потребно да се избегнуваат знаци прашалник внатре во нив.
PGSQL
Сигнатурата со 2 аргументи на pg_fetch_result(),
pg_field_prtlen()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во
pg_field_is_null() сега е застарена. Користете ја сигнатурата со 3 аргументи со row постави на
null instead.
— Разни функции
lcg_value() сега е застарена, бидејќи функцијата е неисправна на повеќе начини. Користете Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. instead.
Рефлексија
Повикување , тогаш експортот се враќа како со еден аргумент е застарено. Користете ReflectionMethod::createFromMethodName() instead.
Сесија
Повикување session_set_save_handler() со повеќе од два аргументи е застарено. Користете ја наместо тоа потписот со два аргументи.
Промена на вредноста на
session.sid_length and
session.sid_bits_per_character
INI поставките е застарено. Ажурирајте ја бек-енд локацијата за складирање на сесиите за да прифаќа 32-битни хексадецимални ID на сесии и престанете да ги менувате овие две INI поставки наместо тоа.
Промена на вредноста на
session.use_only_cookies,
session.use_trans_sid,
session.trans_sid_tags,
session.trans_sid_hostsПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во
session.referer_check
INI поставките е застарено. На SID константата е исто така застарена.
SOAP
Поминување на int to Овие опционални параметри ќе бидат предадени на конструкторот на стандардната класа при креирање на објектот. е сега застарено. Ако сите PHP функции треба да бидат обезбедени, израмнете ја низата вратена од get_defined_functions().
На SOAP_FUNCTIONS_ALL константата сега е застарена.
SPL
На SplFixedArray::__wakeup() методот сега е застарен, бидејќи имплементира SplFixedArray::__serialize() and SplFixedArray::__unserialize() кои треба да бидат презапишани наместо тоа.
Користењето на стандардната вредност за escape параметарот за
SplFileObject::fputcsv(),
SplFileObject::fgetcsv()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во
- Добива линија од датотечен покажувач и парсира за CSV полиња е сега застарено. Мора експлицитно да се помине или позиционо или преку именувани аргументи. Ова не се однесува на SplFileObject::fgetcsv()
and - Добива линија од датотечен покажувач и парсира за CSV полиња if
SplFileObject::fputcsv() беше искористено за поставување нова стандардна вредност.
Стандардно
Повикување stream_context_set_option() со два аргументи е застарено. Користете stream_context_set_options() instead.
Десериализација на низи користејќи ги големите букви S таг со unserialize() е застарено.
Користењето на стандардната вредност за escape параметарот за
fputcsv(),
fgetcsv()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во
str_getcsv() е сега застарено. Мора експлицитно да се помине или позиционо или со именувани аргументи.
XML
На xml_set_object() функцијата е застарена.
Поминување на не-callable низи на xml_set_* функциите сега е застарено.