Liberazione di lingua di prugrammazione PHP 7.4

Dopu un annu di sviluppu prisentatu liberazione di lingua di prugrammazione PHP 7.4. U novu ramu include una seria di funzioni novi, è ancu parechji cambiamenti chì rompenu a cumpatibilità.

Chjave migliurà in PHP 7.4:

  • Proprietà Typed - E proprietà di classi ponu avà include dichjarazioni di tipu, per esempiu:

    Classe User {
    public int $id;
    stringa publica $name;
    }

  • Abbreviatu sintassi per definisce e funzioni "fn (parameter_list) => expr" cù ubligatoriu di u scopu per valore. Per esempiu, "fn($x) => $x + $y" hè analogu à "$fn2 = function ($x) use ($y) {return $x + $y;}");
  • Operatore di assignazione di stenografia "??=" chì pò esse usatu per definisce un valore predeterminatu ("a ??= b" hè simile à "a = a ?? b", se "a" hè definitu u so valore hè almacenatu, è s'ellu ùn hè micca definitu. hè attribuitu u valore "b");
  • Limitatu uppurtunità priservà a ghjerarchia di l'eredi di i tipi in i tipi di ritornu derivati, o a capacità di riversà a ghjerarchia di i tipi originali in i tipi di argumenti derivati ​​(covarianza u tipu di ritornu è u tippu di argumentu contravarianza). I seguenti custruzzioni ponu avà esse aduprati in PHP:

    classe A {}
    a classe B si estende A {}

    pruduttore di classa {
    metudu di funzione publica (): A {}
    }
    class ChildProducer estende Producer {
    metudu di funzione publica (): B {}
    }

  • Operatore di decompressione in arrays "...$var", permettendu eseguisce a sustituzione di array esistenti quandu definisce un novu array;

    $parts = ['apple', 'pera'];
    $fruits = ['banana', 'aranciu', ...$parts, 'anguria'];
    // ['banana', 'aranciu', 'apple', 'pera', 'anguria'];

  • uppurtunità rapprisintazioni visuale di grandi numeri cù delimitatori in letterali numerichi (1_000_000_00);
  • sustegnu ligami debuli, chì permettenu di mantene una riferenza à un ughjettu, ma ùn impediscenu micca u cullettore di basura per sguassà l'ughjettu assuciatu;
  • Novu miccanisimu serializazione di l'ughjettu (una cumminazione di Serializable è __sleep()/__wakeup()), chì hà rimpiazzatu l'interfaccia Serializable, chì serà deprecated;

    // Ritorna un array chì cuntene tutti i stati di l'ughjettu;
    funzione publica __serialize(): array;

    // Ripristina u statu di un oggettu da un array
    funzione publica __unserialize(array $data): void;

  • Hè permessu di lancià eccezzioni da un metudu __toString();
  • Aghjunghje supportu per precaricare a cache di codice di l'ughjettu. Paràmetru aghjustatu per a cunfigurazione
    opcache.preload, attraversu quale pudete specificà un script PHP chì serà compilatu è eseguitu quandu u servitore principia. Stu script pò carricà l'opcode d'altri schedari attraversu a so inclusione diretta o utilizendu a funzione opcache_compile_file () ;

  • A funzione crc32c aghjunta à l'estensione Hash per calculà i cuntrolli cù u polinomiu Castagnoli;
  • Added support to the password_hash() function for password hashing methods argon2i and argin2id, in l'implementazione di a biblioteca Sodium, se PHP hè custruitu senza libargon;
  • A funzione aghjunta mb_str_split (), simile à str_split (), ma chì opera micca cù byte ma cù pusizioni di caratteri in una stringa multi-byte;
  • A funzione strip_tags() hà avà a capacità di passà un array cù nomi di tag, i.e. invece di strip_tags($str, ' ') pudete avà specificà strip_tags ($str, ['a', 'p']);
  • proc_open() permette à l'operandi di esse listati in un array, invece di una stringa per eseguisce, è furnisce ancu redirezzione di filu è supportu per un descrittore di file null;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // Cum'è 2>&1 in shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // cum'è 2>/dev/null o 2>nul in shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • L'estensioni Firebird/Interbase, Recode è WDDX sò escluse da a distribuzione basica. Queste estensioni sò avà distribuite attraversu PECL;
  • Trasferitu à a categuria anticu funzioni cum'è operatori ternari nidificati senza parentesi, accessu à elementi di array è stringhe cù parentesi curly ("$var{$idx}"), a funzione is_real () è casting à reale, utilizendu a keyword parent senza una classa parent, paràmetru allow_url_include configurazioni , usendu array_key_exists () nantu à l'uggetti.

    E funzioni get_magic_quotes_gpc(), get_magic_quotes_runtime(), è
    hebrevc (), convert_cyr_string (), money_format (), ezmlm_hash (), restore_include_path (), ldap_control_paged_result_response (), ldap_control_paged_result (), ReflectionType::__toString ().

    Un avvirtimentu annantu à l'usu di una funzione obsoleta hè statu furnitu quandu pruvate di processà simboli sbagliati in funzioni
    base_convert(), bindec(), octdec() è hexdec(), è quandu si specifica un mudellu senza stringa in mb_ereg_replace().

Source: opennet.ru

Add a comment