Izdanje programskog jezika PHP 7.4

Nakon godinu dana razvoja predstavio izdanje programskog jezika PHP 7.4. Nova grana uključuje niz novih značajki, kao i nekoliko promjena koje narušavaju kompatibilnost.

Ključ poboljšanja u PHP 7.4:

  • Tipizirana svojstva - svojstva klase sada mogu uključivati ​​deklaracije tipa, na primjer:

    klasa Korisnik {
    public int $id;
    javni niz $name;
    }

  • Skraćeno sintaksa za definiranje funkcija “fn(parameter_list) => expr” s opsegom vezanjem vrijednosti. Na primjer, “fn($x) => $x + $y” analogno je “$fn2 = funkcija ($x) koristi ($y) {povratak $x + $y;}”);
  • Stenografski operator dodjele "??=" koji se može koristiti za definiranje zadane vrijednosti ("a ??= b" je sličan "a = a ?? b", ako je "a" definiran njegova vrijednost se pohranjuje, a ako nije definiran dodjeljuje se vrijednost "b" );
  • Ograničeno prilika očuvanje hijerarhije nasljeđivanja tipova u izvedenim povratnim tipovima ili mogućnost preokretanja hijerarhije izvornih tipova u izvedenim tipovima argumenata (kovarijanca povratni tip i kontravarijacija tipa argumenta). Sljedeće konstrukcije sada se mogu koristiti u PHP-u:

    klasa A {}
    klasa B proširuje A {}

    klasa producent {
    metoda javne funkcije(): A {}
    }
    class ChildProducer extends Producer {
    metoda javne funkcije(): B {}
    }

  • Raspakiranje operatora unutar polja “…$var”, dopuštajući izvršiti zamjenu postojećih nizova pri definiranju novog niza;

    $dijelovi = ['jabuka', 'kruška'];
    $voće = ['banana', 'naranča', …$dijelovi, 'lubenica'];
    // ['banana', 'naranča', 'jabuka', 'kruška', 'lubenica'];

  • Prilika vizualni prikaz velikih brojeva s graničnicima u numeričkim literalima (1_000_000_00);
  • podrška slabe karike, koji vam omogućuju da zadržite referencu na objekt, ali ne blokirate sakupljač smeća od brisanja pridruženog objekta;
  • Novi mehanizam serijalizacija objekta (kombinacija Serializable i __sleep()/__wakeup()), koja je zamijenila Serializable sučelje, koje će biti zastarjelo;

    // Vraća niz koji sadrži sva stanja objekta;
    javna funkcija __serialize(): niz;

    // Vraća stanje objekta iz niza
    javna funkcija __unserialize(array $data): void;

  • Dopušteno bacanje iznimaka iz metode __toString();
  • Dodana podrška za predučitavanje predmemorije objektnog koda. Dodan parametar za podešavanje
    opcache.naprezanje, putem kojeg možete odrediti PHP skriptu koja će se kompajlirati i pokrenuti kada se poslužitelj pokrene. Ova skripta može učitati operacijski kod drugih datoteka njihovim izravnim uključivanjem ili korištenjem funkcije opcache_compile_file();

  • Dodana funkcija crc32c proširenju Hash za izračunavanje kontrolnih zbrojeva pomoću Castagnolijevog polinoma;
  • Dodana podrška funkciji password_hash() za metode raspršivanja lozinki argon2i i argin2id, u implementaciji biblioteke Natrij, ako je PHP izgrađen bez libargona;
  • Dodana funkcija mb_str_split(), slična str_split(), ali ne radi s bajtovima nego s položajima znakova u višebajtnom nizu;
  • Funkcija strip_tags() sada ima mogućnost proslijeđivanja polja s nazivima oznaka, tj. umjesto strip_tags($str, ' ') sada možete navesti strip_tags($str, ['a', 'p']);
  • proc_open() omogućuje da operandi budu ispisani u nizu, umjesto pokretanja niza, i također pruža preusmjeravanje niti i podršku za null deskriptor datoteke;

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

    // Kao 2>&1 u ljusci
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // poput 2>/dev/null ili 2>nul u ljusci
    proc_open($cmd, [1 => ['cijev', 'w'], 2 => ['null']], $cijevi);

  • Ekstenzije Firebird/Interbase, Recode i WDDX isključene su iz osnovne distribucije. Ova proširenja se sada distribuiraju putem PECL-a;
  • Prebačeno u kategoriju zastario značajke kao što su ugniježđeni ternarni operatori bez zagrada, pristup elementima niza i nizovima pomoću vitičastih zagrada (“$var{$idx}”), funkcija is_real() i pretvaranje u real, korištenje nadređene ključne riječi bez nadređene klase, konfiguracije parametara allow_url_include , koristeći array_key_exists() na objektima.

    Funkcije get_magic_quotes_gpc(), get_magic_quotes_runtime() i
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Omogućeno je upozorenje o korištenju zastarjele značajke prilikom pokušaja obrade netočnih simbola u funkcijama
    base_convert(), bindec(), octdec() i hexdec(), i kada specificirate uzorak koji nije string u mb_ereg_replace().

Izvor: opennet.ru

Dodajte komentar