If you try to get all methods / functions assigning an optional argument before a mandatory one, try this regex (single line)
<?php
function\s+[a-z][a-zA-Z0-9_]*\((?:\$[a-z][a-zA-Z0-9]*\s*,\s*)*
(?:\$[a-z][A-Za-z0-9_]*\s*=[^\$\)]+)+\$[a-z][a-zA-Z0-9_]*\)
?>
for
<?php
public function test($a, $b) {
$a = [];
$b = [$abc => $ss[],
];
}
private function too($c, $a = true, $b) {
}
protected function bar($a = []) {
}
public function foo($a, $b = true) {
}
public function fooBar32($a=true, $b = [], $c) {
}
private function oo_bAr($a = []) {
}
?>
it will match too() and fooBar32()
Have a nice migration! ;)Обележани функции
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Обележани функции
Референца за `migration80.deprecated.php` со подобрена типографија и навигација.
Обележани функции
PHP јадро
-
If a parameter with a default value is followed by a required parameter, the default value has no effect. This is deprecated as of PHP 8.0.0 and can generally be resolved by dropping the default value, without a change in functionality:
<?php
function test($a = [], $b) {} // Before
function test($a, $b) {} // After
?>Ако параметар со стандардна вредност е проследен со задолжителен параметар, стандардната вредност нема ефект. Ова е застарено од PHP 8.0.0 и генерално може да се реши со отстранување на стандардната вредност, без промена во функционалноста:
Type $param = nullЕден исклучок на ова правило се параметрите од типот<?php
function test(A $a = null, $b) {} // Still allowed
function test(?A $a, $b) {} // Recommended
?> -
Повикување get_defined_functions() with
exclude_disabled, каде што стандардната вредност null го прави типот имплицитно null. Оваа употреба останува дозволена, но се препорачува да се користи експлицитен nullable тип наместо:falseексплицитно поставен на get_defined_functions() е застарено и веќе нема ефект.
Омажи
-
enchant_broker_set_dict_path() and enchant_broker_get_dict_path() никогаш нема да вклучува оневозможени функции.
-
enchant_dict_add_to_personal() се застарени, бидејќи таа функционалност не е достапна ниту во libenchant < 1.5 ниту во libenchant-2. enchant_dict_add() instead.
-
enchant_dict_is_in_session() се застарени, бидејќи таа функционалност не е достапна ниту во libenchant < 1.5 ниту во libenchant-2. enchant_dict_is_added() instead.
-
enchant_broker_free() and enchant_broker_free_dict() се застарени; користете
-
На
ENCHANT_MYSPELLandENCHANT_ISPELLсе застарени; наместо тоа, поништете го објектот.
LibXML
libxml_disable_entity_loader() константите се застарени.
LIBXML_NOENT е застарено. Бидејќи libxml 2.9.0 сега е задолжително, вчитувањето на надворешни ентитети е загарантирано да биде оневозможено по стандард, и оваа функција веќе не е потребна за заштита од XXE напади, освен ако (сè уште ранливиот)
libxml_set_external_entity_loader() се користи. Во тој случај, се препорачува да се рефакторира кодот користејќи
за да се спречи вчитувањето на надворешни ентитети.
-
World Wide Web Consortium (пример: 2005-08-15T15:52:01+00:00)
PGSQL_LIBPQ_VERSION_STRPGSQL / PDO PGSQLPGSQL_LIBPQ_VERSIONсега ја има истата вредност како -
, и затоа е застарено.
- pg_errormessage() → pg_last_error()
- pg_numrows() → pg_num_rows()
- pg_numfields() → pg_num_fields()
- pg_cmdtuples() → pg_affected_rows()
- pg_fieldname() → pg_field_name()
- pg_fieldsize() → pg_field_size()
- pg_fieldtype() → pg_field_type()
- pg_fieldnum() → pg_field_num()
- pg_result() → pg_fetch_result()
- pg_fieldprtlen() → pg_field_prtlen()
- pg_fieldisnull() → pg_field_is_null()
- pg_freeresult() → pg_free_result()
- pg_getlastoid() → pg_last_oid()
- pg_locreate() → pg_lo_create()
- pg_lounlink() → pg_lo_unlink()
- pg_loopen() → pg_lo_open()
- pg_loclose() → pg_lo_close()
- pg_loread() → pg_lo_read()
- pg_lowrite() → pg_lo_write()
- pg_loreadall() → pg_lo_read_all()
- pg_loimport() → pg_lo_import()
- pg_loexport() → pg_lo_export()
- pg_setclientencoding() → pg_set_client_encoding()
- pg_clientencoding() -> pg_client_encoding()
Стандардна библиотека
-
Алијасите на функциите во екстензијата pgsql се застарени. Погледнете ја следната листа за тоа кои функции треба да се користат наместо тоа:
trueorfalseФункциите за споредба на сортирање што враќаат<?php
// Replace
usort($array, fn($a, $b) => $a > $b);
// With
usort($array, fn($a, $b) => $a <=> $b);
?>
candido1212 на yahoo точка com точка br
-
сега ќе фрлат предупредување за застареност и треба да се заменат со имплементација што враќа цел број помал, еднаков или поголем од нула.
-
Процедуралната API на Zip е застарена. Користете ZipArchive наместо тоа. Итерацијата преку сите записи може да се постигне со користење ако нема повеќе записи за читање, или код за грешка ако се случила грешка. и for јамка:
<?php
// iterate using the procedural API
assert(is_resource($zip));
while ($entry = zip_read($zip)) {
echo zip_entry_name($entry);
}
// iterate using the object-oriented API
assert($zip instanceof ZipArchive);
for ($i = 0; $entry = $zip->statIndex($i); $i++) {
echo $entry['name'];
}
?>
Рефлексија
-
Ако параметар со стандардна вредност е следен од задолжителен параметар, стандардната вредност нема ефект. Ова е застарено од PHP 8.0.0 и генерално може да се реши со отстранување на стандардната вредност, без промена во функционалноста: е застарен, бидејќи веќе не е можно да се создаде ReflectionFunction за оневозможена функција. Овој метод сега секогаш враќа
false. -
(PHP 5 >= 5.1.3, PHP 7, PHP 8), ReflectionFunction::isDisabled()Препорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во ReflectionParameter::isArray() се застарени. се очекува, Пример #4 Споредување на вратената вредност на include ReflectionType API треба да се користат наместо тоа.