Po roku vývoja vydanie programovacieho jazyka . Nová pobočka obsahuje sériu nových funkcií, ako aj niekoľko zmien, ktoré narúšajú kompatibilitu.
Kľúč v PHP 7.4:
- - vlastnosti triedy môžu teraz obsahovať deklarácie typu, napríklad:
trieda Používateľ {
public int $id;
verejný reťazec $meno;
} - syntax na definovanie funkcií „fn(zoznam_parametrov) => expr“ s rozsahom viazaným hodnotou. Napríklad „fn($x) => $x + $y“ je analogické k „$fn2 = funkcia ($x) použite ($y) {return $x + $y;}“);
- "??=", ktorý možno použiť na definovanie predvolenej hodnoty ("a ??= b" je podobné ako "a = a ?? b", ak je definované "a", jeho hodnota sa uloží, a ak nie je definovaná má priradenú hodnotu "b" );
- Obmedzené zachovanie hierarchie dedičnosti typov v odvodených návratových typoch alebo možnosť obrátiť hierarchiu pôvodných typov v odvodených typoch argumentov ( návratový typ a rozporuplnosť typu argumentu). V PHP je teraz možné použiť nasledujúce konštrukcie:
trieda A {}
trieda B rozširuje A {}class Producent {
metóda verejnej funkcie (): A {}
}
class ChildProducer rozširuje Producer {
metóda verejnej funkcie (): B {}
} - Operátor rozbaľovania vnútri polí „…$var“, vykonať náhradu existujúcich polí pri definovaní nového poľa;
$parts = ['jablko', 'hruška'];
$ovocie = ['banán', 'pomaranč', …$časti, 'vodný melón'];
// ['banán', 'pomaranč', 'jablko', 'hruška', 'vodný melón']; - vizuálne znázornenie veľkých čísel s oddeľovačmi v číselných literáloch (1_000_000_00);
- Podpora , ktoré vám umožňujú zachovať referenciu na objekt, ale nebránia zberaču odpadu vo vymazaní pridruženého objektu;
- Nový serializácia objektov (kombinácia Serializable a __sleep()/__wakeup()), ktorá nahradila Serializable rozhranie, ktoré bude zastarané;
// Vráti pole obsahujúce všetky stavy objektu;
verejná funkcia __serialize(): pole;// Obnoví stav objektu z poľa
verejná funkcia __unserialize(pole $data): void; - Povolené vyvolávať výnimky z metódy ;
- Pridaná podpora pre predbežné načítanie vyrovnávacej pamäte objektového kódu. Pridaný parameter pre nastavenie
, prostredníctvom ktorého môžete zadať PHP skript, ktorý sa skompiluje a spustí pri spustení servera. Tento skript môže načítať operačný kód iných súborov prostredníctvom ich priameho zahrnutia alebo pomocou funkcie opcache_compile_file(); - Do rozšírenia Hash bola pridaná funkcia crc32c na výpočet kontrolných súčtov pomocou Castagnoliho polynómu;
- Pridaná podpora funkcie password_hash() pre metódy hashovania hesiel argon2i a argin2id v implementácii knižnice Sodium, ak je PHP zostavené bez libargonu;
- Pridaná funkcia mb_str_split(), podobná str_split(), ale nepracuje s bajtmi, ale s pozíciami znakov vo viacbajtovom reťazci;
- Funkcia strip_tags() má teraz možnosť odovzdať pole s názvami značiek, t.j. namiesto strip_tags($str, ' ') teraz môžete zadať strip_tags($str, ['a', 'p']);
- proc_open() umožňuje, aby boli operandy uvedené v poli, a nie v reťazci, aby sa spúšťali, a tiež poskytuje presmerovanie vlákien a podporu pre nulový deskriptor súboru;
proc_open(['php', '-r', 'echo "Ahoj svet\n";'], $descriptors, $pipes);
// Like 2>&1 in shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);// ako 2>/dev/null alebo 2>nul v shelli
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes); - Rozšírenia Firebird/Interbase, Recode a WDDX sú zo základnej distribúcie vylúčené. Tieto rozšírenia sú teraz distribuované prostredníctvom PECL;
- Presunuté do kategórie funkcie, ako sú vnorené ternárne operátory bez zátvoriek, prístup k prvkom poľa a reťazcom pomocou zložených zátvoriek (“$var{$idx}”), funkcia is_real() a pretypovanie na real, pomocou nadradeného kľúčového slova bez nadradenej triedy, konfigurácie parametra allow_url_include pomocou array_key_exists() na objektoch.
Funkcie get_magic_quotes_gpc(), get_magic_quotes_runtime() a
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Pri pokuse o spracovanie nesprávnych symbolov vo funkciách bolo poskytnuté upozornenie na použitie zastaranej funkcie
base_convert(), bindec(), octdec() a hexdec() a pri špecifikovaní nereťazcového vzoru v mb_ereg_replace().
Zdroj: opennet.ru
