Alfatest af PHP 8.2 er begyndt

Den første alfa-udgivelse af den nye gren af ​​PHP 8.2-programmeringssproget er blevet præsenteret. Udgivelsen er planlagt til den 24. november. De vigtigste innovationer, der allerede er tilgængelige til test eller planlagt til implementering i PHP 8.2:

  • Tilføjet separate typer "false" og "null", som for eksempel kan bruges til en funktion til at returnere et fejlafslutningsflag eller en tom værdi. Tidligere kunne "false" og "null" kun bruges sammen med andre typer (for eksempel "streng|false"), men nu kan de bruges separat: function alwaysFalse(): false { return false; }
  • Tilføjet muligheden for at markere en klasse som skrivebeskyttet. Egenskaber i sådanne klasser kan kun indstilles én gang, hvorefter de ikke kan ændres. Tidligere kunne individuelle klasseegenskaber markeres som skrivebeskyttet, men nu kan du aktivere denne tilstand for alle klasseegenskaber på én gang. Angivelse af flaget "skrivebeskyttet" på klasseniveau blokerer også for, at egenskaber tilføjes dynamisk til klassen. skrivebeskyttet klasse Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'forkert'; // Fejl: Kan ikke oprette dynamisk egenskab Post::$unknown
  • Evnen til dynamisk at oprette egenskaber i en klasse (som "post->unknown" i eksemplet ovenfor) er blevet forældet. I PHP 9.0 vil adgang til egenskaber, der ikke oprindeligt er defineret i klassen, resultere i en fejl (ErrorException). Klasser, der giver __get og __set metoder til at skabe egenskaber, eller dynamiske egenskaber i stdClass vil fortsætte med at arbejde uden ændringer, kun implicit arbejde med ikke-eksisterende egenskaber vil blive understøttet for at beskytte udvikleren mod skjulte fejl. For at bevare den gamle kodes arbejde foreslås "#[AllowDynamicProperties]" attributten, hvilket tillader brugen af ​​dynamiske egenskaber.
  • Giver mulighed for at filtrere følsomme parametre i staksporingsoutputtet under en fejl. Det kan være nødvendigt at skære visse oplysninger ud, når oplysninger om fejl, der opstår, automatisk sendes til tredjepartstjenester, der sporer problemer og informerer udviklere om dem. For eksempel kan du ekskludere parametre, der inkluderer brugernavne, adgangskoder og miljøvariabler, fra sporing. funktionstest( $foo, #[\SensitiveParameter] $adgangskode, $baz ) { throw new Exception('Fejl'); } test('foo', 'adgangskode', 'baz'); Fatal fejl: Ufanget Undtagelse: Fejl i test.php:8 Stack trace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} smidt i test.php på linje 8
  • Muligheden for at erstatte variabelværdier i strenge ved hjælp af udtrykkene "${var}" og ${(var)} er blevet forældet. Understøttelse af de almindeligt anvendte "{$var}"- og "$var"-erstatninger er blevet bibeholdt. For eksempel: "Hej {$world}"; OK "Hej $verden"; OK "Hej ${world}"; Forældet: Brug af ${} i strenge er forældet
  • Forældede delvist understøttede callables, der kan kaldes via "call_user_func($callable)", men som ikke understøtter opkald i form af "$callable()": "self::method" "parent::method" "static" ::metode " ["selv", "metode"] ["forælder", "metode"] ["statisk", "metode"] ["Foo", "Bar::metode"] [ny Foo, "Bar: :metode" ]
  • Implementeret stedsuafhængig sagskonvertering. Funktioner som strtolower() og strtoupper() konverterer nu altid store og små bogstaver i tegn i ASCII-området, som om de var sat til "C"-lokaliteten.

Kilde: opennet.ru

Tilføj en kommentar