Alfa-testing av PHP 8.2 har begynt

Den første alfa-utgivelsen av den nye grenen av programmeringsspråket PHP 8.2 har blitt presentert. Utgivelsen er planlagt til 24. november. De viktigste innovasjonene som allerede er tilgjengelige for testing eller planlagt for implementering i PHP 8.2:

  • Det er lagt til separate typer "false" og "null", som for eksempel kan brukes til å returnere et tegn på fullføring med en feil eller en tom verdi ved en funksjon. Tidligere kunne "false" og "null" bare brukes sammen med andre typer (for eksempel "string|false"), men nå kan de brukes separat: function alwaysFalse(): false { return false; }
  • Lagt til muligheten til å merke en klasse som skrivebeskyttet. Egenskaper i slike klasser kan kun settes én gang, deretter vil de ikke være tilgjengelige for endring. Tidligere kunne individuelle klasseegenskaper merkes som skrivebeskyttet, men nå kan du slå på denne modusen for alle klasseegenskapene samtidig. Å spesifisere "skrivebeskyttet"-flagget på klassenivå blokkerer også dynamisk tillegg av egenskaper til klassen. skrivebeskyttet klasse Post { public function __construct( offentlig streng $tittel, offentlig forfatter $author, ) {} } $post = new Post(/* … */); $post->unknown = 'feil'; // Feil: Kan ikke opprette dynamisk egenskap Post::$unknown
  • Muligheten til å dynamisk opprette egenskaper i en klasse er blitt utdatert (som "post->unknown" i eksemplet ovenfor). I PHP 9.0 vil tilgang til egenskaper som ikke opprinnelig er definert i klassen resultere i en feil (ErrorException). Klasser som gir __get og __set metoder for å lage egenskaper, eller dynamiske egenskaper i stdClass vil fortsette å fungere uendret, kun implisitt arbeid med ikke-eksisterende egenskaper vil bli stoppet for å beskytte utvikleren mot skjulte feil. For å holde den gamle koden fungerende, er "#[AllowDynamicProperties]"-attributtet foreslått, som tillater bruk av dynamiske egenskaper.
  • Gir muligheten til å filtrere sensitive innstillinger i stabelsporingsutgangen på tidspunktet for en feil. Å kutte ut viss informasjon kan være nødvendig når informasjon om feil som oppstår automatisk sendes til tredjepartstjenester som sporer problemer og informerer utviklere om dem. Du kan for eksempel ekskludere parametere fra sporingen som inkluderer brukernavn, passord og miljøvariabler. funksjonstest( $foo, #[\SensitiveParameter] $passord, $baz ) { throw new Exception('Feil'); } test('foo', 'passord', 'baz'); Fatal feil: Ikke fanget Unntak: Feil i test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} kastet i test.php på nett 8
  • Muligheten til å erstatte variabelverdier i strenger ved å bruke uttrykkene "${var}" og ${(var)}" er avviklet. Støtte for ofte brukte "{$var}"- og "$var"-erstatninger har blitt beholdt. For eksempel: "Hei {$world}"; OK "Hei $verden"; OK "Hei ${world}"; Utdatert: Bruk av ${} i strenger er utdatert
  • Delvis støttede callables som kan kalles opp via "call_user_func($callable)" har blitt avviklet, men støtter ikke kall i formen "$callable()": "self::method" "parent::method" "static :: metode" ["selv", "metode"] ["foreldre", "metode"] ["statisk", "metode"] ["Foo", "Bar::metode"] [ny Foo, "Bar: :metode" "]
  • Implementert stedsuavhengig sakskonvertering. Funksjoner som strtolower() og strtoupper() konverterer nå alltid store og små bokstaver til tegn i ASCII-området, som når du setter lokaliteten til "C".

Kilde: opennet.ru

Legg til en kommentar