Započelo je alfa testiranje PHP 8.2

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

  • Dodani su zasebni tipovi "false" i "null", koji se mogu koristiti, na primjer, za funkciju koja vraća oznaku prekida pogreške ili praznu vrijednost. Prethodno su se "false" i "null" mogli koristiti samo u kombinaciji s drugim tipovima (na primjer, "string|false"), ali sada se mogu koristiti zasebno: function alwaysFalse(): false { return false; }
  • Dodana mogućnost označavanja klase kao samo za čitanje. Svojstva u takvim klasama mogu se postaviti samo jednom, nakon čega se ne mogu mijenjati. Prethodno su pojedina svojstva klase mogla biti označena kao 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. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'pogrešno'; // Pogreška: nije moguće stvoriti dinamičko svojstvo Post::$unknown
  • Mogućnost dinamičkog stvaranja svojstava u klasi (poput "post->unknown" u gornjem primjeru) je zastarjela. U PHP 9.0, pristup svojstvima koja nisu inicijalno definirana u klasi rezultirat će pogreškom (ErrorException). Klase koje pružaju metode __get i __set za stvaranje svojstava ili dinamičkih svojstava u stdClass nastavit će raditi bez promjena, bit će podržan samo implicitni rad s nepostojećim svojstvima kako bi se programer zaštitio od skrivenih grešaka. Kako bi se sačuvao rad starog koda, predlaže se atribut "#[AllowDynamicProperties]", koji dopušta korištenje dinamičkih svojstava.
  • Pruža mogućnost filtriranja osjetljivih parametara u izlazu praćenja stoga tijekom pogreške. Izrezivanje određenih informacija može biti potrebno kada se informacije o pogreškama koje se pojave automatski šalju uslugama trećih strana koje prate probleme i informiraju programere o njima. Na primjer, iz praćenja možete isključiti parametre koji uključuju korisnička imena, lozinke i varijable okruženja. test funkcije( $foo, #[\SensitiveParameter] $lozinka, $baz ) { throw new Exception('Error'); } test('foo', 'lozinka', 'baz'); Fatalna pogreška: Neuhvaćena iznimka: Pogreška u test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} bačeno u test.php na liniji 8
  • Mogućnost zamjene vrijednosti varijable 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 "Zdravo $svijete"; 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"] ["parent", "method"] ["static", "method"] ["Foo", "Bar::method"] [novi Foo, "Bar: :method" ]
  • Implementirana konverzija velikih i malih slova neovisno o lokalnoj oznaci. Funkcije poput strtolower() i strtoupper() sada uvijek pretvaraju velika i mala slova znakova u ASCII rasponu kao da su postavljeni na "C" lokalizaciju.

Izvor: opennet.ru

Dodajte komentar