Začelo se je alfa-testiranje PHP 8.2

Predstavljen je prvi alfa-izdanje nove grane programskog jezika PHP 8.2. Izdanje je zakazano za 24. novembar. Glavne novine, koje su već dostupne za testiranje ili planiraju se za implementaciju u PHP 8.2:

  • Dodati su odvojeni tipovi „false“ i „null“, koji se mogu koristiti, na primer, za vraćanje funkcijom oznake završetka s greškom ili prazne vrednosti. Pre toga su „false“ i „null“ mogli da se koriste samo u vezi s drugim tipovima (na primer, „string|false“), a sada se mogu primeniti odvojeno: function alwaysFalse(): false { return false; }
  • Dodana je mogućnost označavanja klase kao dostupne samo za čitanje. Svojstva u takvim klasama mogu biti postavljena samo jednom, nakon čega neće biti dostupna za promene. Pre toga su samo pojedinačna svojstva klase mogla biti označena kao samo za čitanje, a sada se ovaj režim može uključiti za sva svojstva klase odjednom. Postavljanje flage „readonly“ na nivou klase takođe blokira dinamičko dodavanje svojstava u klasu. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = ‘wrong’; // Greška: Cannot create dynamic property Post::$unknown
  • Objavljena je zastarela mogućnost dinamičkog kreiranja svojstava u klasi (kao „post->unknown“ u prethodnom primeru). U PHP 9.0, pristup svojstvima koja nisu prvobitno definisana u klasi će izazvati grešku (ErrorException). Klase koje pružaju metode __get i __set za kreiranje svojstava, ili dinamička svojstva u stdClass, će nastaviti da funkcionišu bez promena, dok će podrška za nemak na nepostojeća svojstva biti obustavljena kako bi se zaštitio programer od skrivenih grešaka. Da bi se očuvala funkcionalnost starog koda, predložen je atribut „#[AllowDynamicProperties]“, koji dozvoljava korišćenje dinamičkih svojstava.
  • Dodana je mogućnost filtriranja poverljivih parametara u podacima o steku, koji se prikazuju tokom greške. Izuzimanje određene informacije može biti potrebno kada se podaci o greškama automatski šalju u spoljne servise koji prate probleme i obaveštavaju ih programere. Na primer, moguće je isključiti iz praćenja parametre koji sadrže korisnička imena, lozinke i varijable okruženja. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Greška'); } test('foo', 'password', 'baz'); Fatal error: Uncaught Exception: Greška in test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} thrown in test.php on line 8
  • Proglasila se zastarjelom mogućnost umetanja vrednosti varijabli u nizove putem izraza «${var}» i ${(var)}». Podrška za obično korišćena umetanja «{$var}» i «$var» ostaje. Na primer: «Zdravo {$world}»; OK «Zdravo $world»; OK «Zdravo ${world}»; Zastarjelo: Korišćenje ${} u nizovima je zastarjelo
  • Proglasile su se zastarjelim delimično podržani pozivni objekti (callable), koji se mogu pozvati putem «call_user_func($callable)», ali ne podržavaju poziv u formi «$callable()»: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [novi Foo, «Bar::method»]
  • Implementirana je konverzija registrovane simbolke koja je nezavisna od lokaliteta. Funkcije poput strtolower() i strtoupper() sada uvek konvertuju registraciju simbola u opsegu ASCII, kao kada se postavi lokalitet «C».

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster