Alfatestning av PHP 8.2 har börjat

Den första alfaversionen av den nya grenen av programmeringsspråket PHP 8.2 har presenterats. Släppet är planerat till den 24 november. De viktigaste innovationerna som redan är tillgängliga för testning eller planerade för implementering i PHP 8.2:

  • Lagt till separata typer "false" och "null", som till exempel kan användas för en funktion för att returnera en felavslutningsflagga eller ett tomt värde. Tidigare kunde "false" och "null" bara användas i kombination med andra typer (till exempel "sträng|false"), men nu kan de användas separat: function alwaysFalse(): false { return false; }
  • Lade till möjligheten att markera en klass som skrivskyddad. Egenskaper i sådana klasser kan endast ställas in en gång, varefter de inte kan ändras. Tidigare kunde enskilda klassegenskaper märkas som skrivskyddade, men nu kan du aktivera det här läget för alla klassegenskaper samtidigt. Genom att ange flaggan "skrivskyddad" på klassnivå blockeras också egenskaper från att läggas till dynamiskt i klassen. skrivskyddad klass Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->unknown = 'fel'; // Fel: Kan inte skapa dynamisk egenskap Post::$unknown
  • Möjligheten att dynamiskt skapa egenskaper i en klass (som "post->unknown" i exemplet ovan) har föråldrats. I PHP 9.0 kommer åtkomst till egenskaper som inte är definierade från början i klassen att resultera i ett fel (ErrorException). Klasser som tillhandahåller metoderna __get och __set för att skapa egenskaper, eller dynamiska egenskaper i stdClass, kommer att fortsätta att fungera oförändrat, endast implicit arbete med icke-existerande egenskaper kommer att stödjas för att skydda utvecklaren från dolda buggar. För att bevara arbetet med den gamla koden, föreslås attributet "#[AllowDynamicProperties]", vilket tillåter användning av dynamiska egenskaper.
  • Ger möjlighet att filtrera känsliga parametrar i stackspårningsutgången under ett fel. Att skära bort viss information kan vara nödvändigt när information om fel som uppstår automatiskt skickas till tredjepartstjänster som spårar problem och informerar utvecklare om dem. Du kan till exempel utesluta parametrar som inkluderar användarnamn, lösenord och miljövariabler från spårning. funktionstest( $foo, #[\SensitiveParameter] $lösenord, $baz ) { throw new Exception('Error'); } test('foo', 'lösenord', 'baz'); Fatalt fel: Ofångat undantag: Fel i test.php:8 Stackspårning: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} kastat i test.php på rad 8
  • Möjligheten att ersätta variabelvärden i strängar med uttrycken "${var}" och ${(var)} har föråldrats. Stöd för de vanligt använda "{$var}"- och "$var"-ersättningarna har behållits. Till exempel: "Hej {$world}"; OK "Hej $world"; OK "Hej ${world}"; Utfasad: Att använda ${} i strängar är utfasad
  • Utfasade anropbara som delvis stöds som kan anropas via "call_user_func($callable)" men som inte stöder anrop i form av "$callable()": "self::method" "parent::method" "static" ::metod " ["själv", "metod"] ["förälder", "metod"] ["statisk", "metod"] ["Foo", "Bar::metod"] [ny Foo, "Bar: :metod" ]
  • Implementerad platsoberoende fallkonvertering. Funktioner som strtolower() och strtoupper() konverterar nu alltid skiftläge för tecken i ASCII-intervallet som om de ställts in på "C"-språket.

Källa: opennet.ru

Lägg en kommentar