Alfa testiranje PHP 8.2 je počelo

Predstavljeno je prvo alfa izdanje nove grane programskog jezika PHP 8.2. Izdanje je zakazano za 24. novembar. Glavne inovacije koje su već dostupne za testiranje ili planirane za implementaciju u PHP 8.2:

  • Dodani su odvojeni tipovi “false” i “null”, koji se mogu koristiti, na primjer, za funkciju da vrati oznaku za završetak greške ili praznu vrijednost. Ranije su se “false” i “null” mogli koristiti samo u sprezi sa drugim tipovima (na primjer, “string|false”), ali sada se mogu koristiti odvojeno: funkcija alwaysFalse(): false { return false; }
  • Dodata mogućnost označavanja klase kao samo za čitanje. Svojstva u takvim klasama mogu se postaviti samo jednom, nakon čega se ne mogu mijenjati. Ranije su pojedinačna svojstva klase mogla biti označena samo za čitanje, ali sada možete omogućiti ovaj način za sva svojstva klase odjednom. Određivanje oznake "samo za čitanje" na razini klase također blokira dinamičko dodavanje svojstava u klasu. klasa samo za čitanje Objava { javna funkcija __construct( javni string $title, javni autor $author, ) {} } $post = nova objava(/* … */); $post->unknown = 'pogrešno'; // Greška: Nije moguće kreirati dinamičko svojstvo Post::$unknown
  • Sposobnost dinamičkog kreiranja svojstava u klasi (poput "post->unknown" u gornjem primjeru) je zastarjela. U PHP 9.0, pristupanje svojstvima koja nisu inicijalno definisana u klasi će rezultirati greškom (ErrorException). Klase koje pružaju metode __get i __set za kreiranje svojstava ili dinamička svojstva u stdClass nastavit će raditi bez promjena, samo će implicitni rad s nepostojećim svojstvima biti podržan kako bi se programer zaštitio od skrivenih grešaka. Da bi se sačuvao rad starog koda, predložen je atribut “#[AllowDynamicProperties]” koji omogućava korištenje dinamičkih svojstava.
  • Pruža mogućnost filtriranja osjetljivih parametara u izlazu praćenja steka za vrijeme greške. Izrezivanje određenih informacija može biti neophodno kada se informacije o greškama koje se javljaju automatski šalju uslugama trećih strana koje prate probleme i obaveštavaju programere o njima. Na primjer, možete isključiti parametre koji uključuju korisnička imena, lozinke i varijable okruženja iz praćenja. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'password', 'baz'); Fatalna greška: Neuhvaćen izuzetak: Greška u test.php:8 Praćenje steka: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} bačeno u test.php na liniji 8
  • Mogućnost zamjene vrijednosti varijabli u nizove pomoću izraza "${var}" i ${(var)} je zastarjela. Podrška za često korištene zamjene "{$var}" i "$var" je zadržana. Na primjer: "Zdravo {$world}"; OK "Hello $world"; OK "Zdravo ${world}"; Zastarjelo: Upotreba ${} u nizovima je zastarjela
  • Zastarjeli djelomično podržani pozivi koji se mogu pozvati putem "call_user_func($callable)", ali ne podržavaju pozivanje u obliku "$callable()": "self::method" "parent::method" "static" ::method " ["self", "method"] ["roditelj", "method"] ["static", "method"] ["Foo", "Bar::method"] [novi Foo, "Bar: :method" ]
  • Implementirana konverzija velikih i malih slova neovisna o lokalizaciji. Funkcije kao što su strtolower() i strtoupper() sada uvijek pretvaraju velika i mala slova znakova u ASCII opsegu kao da su postavljene na "C" lokalizaciju.

izvor: opennet.ru

Dodajte komentar