Po letu razvoja izdaja programskega jezika Nova veja vključuje številne nove funkcije, pa tudi več nezdružljivih sprememb.
Ključ v PHP 7.4:
- — lastnosti razreda lahko zdaj vključujejo deklaracije tipov, na primer:
razred uporabnik {
javno int $id;
javni niz $ime;
} - Sintaksa definicije funkcije "fn(seznam_parametrov) => izraz" z vezavo obsega vrednosti. Na primer, "fn($x) => $x + $y" je enakovredno "$fn2 = funkcija ($x) use ($y) {return $x + $y;}");
- "??=", ki ga je mogoče uporabiti za definiranje privzete vrednosti ("a ??= b" je podobno kot "a = a ?? b", če je definiran "a", se njegova vrednost ohrani, če pa ni definiran, se dodeli vrednost "b");
- Omejeno ohranjanje hierarhije dedovanja tipov v tipih povratnih vrednosti, ki so iz njih izpeljani, ali možnost pretvorbe hierarhije izvirnih tipov v nasprotno v izpeljanih tipih argumentov ( kontravariance povratnega tipa in tipa argumenta). V PHP-ju je zdaj mogoče uporabiti naslednje konstrukte:
razred A {}
razred B razširja A {}razred Producent {
javna funkcija metoda(): A {}
}
razred ChildProducer razširja Producer {
metoda javne funkcije(): B {}
} - Operator razpakiranja znotraj polj "...$var", izvesti zamenjavo obstoječih polj pri definiranju novega polja;
$deli = ['jabolko', 'hruška'];
$sadje = ['banana', 'pomaranča', …$deli, 'lubenica'];
// ['banana', 'pomaranča', 'jabolko', 'hruška', 'lubenica']; - vizualna predstavitev velikih števil z ločili v numeričnih literalih (1_000_000_00);
- Podpora , ki omogočajo ohranitev sklica na objekt, vendar ne blokirajo odstranitve povezanega objekta s strani zbiralnika smeti;
- Novo serializacija objektov (kombinacija Serializable in __sleep()/__wakeup()), ki nadomešča vmesnik Serializable, ki bo razglašen za zastarelega;
// Vrne tabelo, ki vsebuje vsa stanja objekta;
javna funkcija __serialize(): polje;// Obnovi stanje objekta iz polja
javna funkcija __unserialize(polje $podatki): void; - Dovoljenje, da metoda sproži izjeme ;
- Dodana je podpora za predhodno nalaganje predpomnilnika objektne kode. Za konfiguracijo je bil dodan nov parameter.
, ki vam omogoča, da določite PHP skript, ki bo preveden in zagnan ob zagonu strežnika. Ta skript lahko naloži opkode drugih datotek tako, da jih neposredno vključi ali uporabi funkcijo opcache_compile_file(); - Funkcija crc32c je bila dodana razširitvi Hash za izračun kontrolnih vsot z uporabo Castagnolijevega polinoma;
- Funkcija password_hash() je bila posodobljena za podporo metod zgoščevanja gesel argon2i in argin2id v implementaciji knjižnice Sodium, če je PHP zgrajen brez knjižnice libargon;
- Dodana je funkcija mb_str_split(), podobna funkciji str_split(), vendar ne deluje na bajte, temveč na položaje znakov v večbajtnem nizu;
- Funkcija strip_tags() vam zdaj omogoča posredovanje polja imen oznak, tj. namesto strip_tags($str, ' ') lahko zdaj določite strip_tags($str, ['a', 'p']);
- proc_open() omogoča seznam operandov v matriki namesto določanja niza za zagon, poleg tega pa omogoča preusmeritev tokov in podpira deskriptor datoteke z ničelnim kodom;
proc_open(['php', '-r', 'echo "Pozdravljen, svet\n";'], $deskriptorji, $cevi);
// Kot 2>&1 v lupini
proc_open($cmd, [1 => ['cev', 'w'], 2 => ['preusmeritev', 1]], $cevi);// kot 2>/dev/null ali 2>nul v lupini
proc_open($cmd, [1 => ['cev', 'w'], 2 => ['null']], $cevi); - Razširitve Firebird/Interbase, Recode in WDDX so bile odstranjene iz osnovne distribucije. Te razširitve so zdaj distribuirane prek PECL;
- Prestavljeno v kategorijo Funkcije, kot so vgnezdeni ternarni operatorji brez oklepajev, dostop do elementov polja in nizov z uporabo zavitih oklepajev ("$var{$idx}"), funkcija is_real() in pretvorba v realno, uporaba ključne besede parent brez nadrejenega razreda, konfiguracijska možnost allow_url_include in uporaba array_key_exists() na objektih.
Funkciji get_magic_quotes_gpc() in get_magic_quotes_runtime() sta bili razglašeni za zastareli.
hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().Prikazano je bilo opozorilo o uporabi zastarele funkcije pri poskusu obdelave neveljavnih znakov v funkcijah.
base_convert(), bindec(), octdec() in hexdec() ter pri določanju vzorca, ki ni niz, v mb_ereg_replace().
Vir: opennet.ru
