Den fÞrste alfa-utgaven av den nye grenen av programmeringssprÄket PHP 8.2 er nÄ tilgjengelig. Utgivelsen er planlagt til 24. november. Hovednyhetene, som allerede er tilgjengelige for testing eller planlegges implementert i PHP 8.2:
- Det har blitt lagt til separate typer «false» og «null», som kan brukes, for eksempel, for Ä returnere en feilmelding eller et tomt verdig fra en funksjon. Tidligere kunne «false» og «null» kun brukes i kombinasjon med andre typer (som «string|false»), men nÄ kan de brukes hver for seg: function alwaysFalse(): false { return false; }
- En ny funksjon for Ä merke klasser som kun lesbare er blitt lagt til. Egenskaper i slike klasser kan kun defineres én gang, hvoretter de ikke vil vÊre tilgjengelige for endring. Tidligere kunne kun individuelle egenskaper i klassen merkes som kun lesbare, men nÄ kan man aktivere denne modusen for alle klassets egenskaper pÄ en gang. à spesifisere flagget «readonly» pÄ klassenivÄ blokkerer ogsÄ dynamisk tillegg av egenskaper til klassen. readonly class Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* ⊠*/); $post->unknown = 'wrong'; // Feil: Kan ikke opprette en dynamisk egenskap Post::$unknown
- Muligheten for dynamisk oppretting av egenskaper i klassen (som «post->unknown» i eksemplet ovenfor) er blitt erklÊrt foreldet. I PHP 9.0 vil tilgang til egenskaper som ikke opprinnelig er definert i klassen, resultere i en feil (ErrorException). Klasser som tilbyr metodene __get og __set for opprettelse av egenskaper, eller dynamiske egenskaper i stdClass, vil fortsette Ä fungere uten endringer, men stÞtten for implicit tilgang til ikke-eksisterende egenskaper vil bli avviklet for Ä beskytte utviklere mot skjulte feil. For Ä opprettholde funksjonaliteten til eldre kode er attributtet «#[AllowDynamicProperties]» foreslÄtt, som tillater bruk av dynamiske egenskaper.
- Det er lagt til mulighet for filtrering av sensitive parametere i stakktracingdata som vises ved feil. Utelukkelse av spesifik informasjon kan vĂŠre nĂždvendig nĂ„r informasjon om oppstĂ„tte feil automatisk sendes til tredjepartstjenester som sporer problemer og informerer utviklerne om dem. For eksempel kan man utelate parametere fra stakken som inneholder brukernavn, passord og miljĂžvariabler. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception(âErrorâ); } test(âfooâ, âpasswordâ, âbazâ); Fatal error: Uncaught Exception: Error in test.php:8 Stack trace: #0 test.php(11): test(âfooâ, Object(SensitiveParameterValue), âbazâ) #1 {main} thrown in test.php on line 8
- Muligheten for substitusjon av variabelverdier i strenger med uttrykkene «${var}» og ${(var)}» er erklÊrt som utdaterte. StÞtte for vanlig brukte substitusjoner «{$var}» og «$var» er bevart. For eksempel: «Hello {$world}»; OK «Hello $world»; OK «Hello ${world}»; Deprecated: Using ${} in strings is deprecated
- Delvis stÞttede kallbare objekter (callable) som kan kalles med «call_user_func($callable)», men ikke stÞtter kall i form av «$callable()» er erklÊrt som utdaterte: «self::method» «parent::method» «static::method» [«self», «method»] [«parent», «method»] [«static», «method»] [«Foo», «Bar::method»] [new Foo, «Bar::method»]
- Det er implementert lokasjonsuavhengig bokstavereduksjon. Funksjoner som strtolower() og strtoupper() vil nÄ alltid konvertere bokstaver i ASCII-omrÄdet uansett innstilt lokal.
Kilde: opennet.ru
