Het alfatesten van PHP 8.2 is begonnen

De eerste alpha-release van de nieuwe tak van de programmeertaal PHP 8.2 is gepresenteerd. De release staat gepland voor 24 november. De belangrijkste innovaties die al beschikbaar zijn om te testen of gepland zijn voor implementatie in PHP 8.2:

  • Er zijn afzonderlijke typen “false” en “null” toegevoegd, die bijvoorbeeld kunnen worden gebruikt voor een functie om een ​​foutbeëindigingsvlag of een lege waarde te retourneren. Voorheen konden “false” en “null” alleen worden gebruikt in combinatie met andere typen (bijvoorbeeld “string|false”), maar nu kunnen ze afzonderlijk worden gebruikt: function AlwaysFalse(): false { return false; }
  • De mogelijkheid toegevoegd om een ​​klasse als alleen-lezen te markeren. Eigenschappen in dergelijke klassen kunnen slechts één keer worden ingesteld, waarna ze niet meer kunnen worden gewijzigd. Voorheen konden individuele klasse-eigenschappen als alleen-lezen worden gemarkeerd, maar nu kunt u deze modus voor alle klasse-eigenschappen tegelijk inschakelen. Het specificeren van de vlag "alleen-lezen" op klasseniveau blokkeert ook dat eigenschappen dynamisch aan de klasse worden toegevoegd. alleen-lezen klasse Post { public function __construct( public string $title, public Author $author, ) {} } $post = new Post(/* … */); $post->onbekend = 'fout'; // Fout: Kan dynamische eigenschap Post::$unknown niet maken
  • De mogelijkheid om dynamisch eigenschappen in een klasse te maken (zoals "post->unknown" in het bovenstaande voorbeeld) is verouderd. In PHP 9.0 zal het benaderen van eigenschappen die aanvankelijk niet in de klasse zijn gedefinieerd, resulteren in een fout (ErrorException). Klassen die __get- en __set-methoden bieden voor het maken van eigenschappen, of dynamische eigenschappen in stdClass, blijven ongewijzigd werken, alleen impliciet werk met niet-bestaande eigenschappen wordt ondersteund om de ontwikkelaar tegen verborgen bugs te beschermen. Om het werk van de oude code te behouden, wordt het attribuut “#[AllowDynamicProperties]” voorgesteld, waardoor het gebruik van dynamische eigenschappen mogelijk is.
  • Biedt de mogelijkheid om tijdens een fout gevoelige parameters in de stacktrace-uitvoer te filteren. Het verwijderen van bepaalde informatie kan nodig zijn wanneer informatie over fouten die optreden automatisch wordt verzonden naar services van derden die problemen opsporen en ontwikkelaars hierover informeren. U kunt bijvoorbeeld parameters die gebruikersnamen, wachtwoorden en omgevingsvariabelen bevatten, uitsluiten van tracering. function test( $foo, #[\SensitiveParameter] $password, $baz ) { throw new Exception('Error'); } test('foo', 'wachtwoord', 'baz'); Fatale fout: niet opgevangen Uitzondering: fout in test.php:8 Stacktrace: #0 test.php(11): test('foo', Object(SensitiveParameterValue), 'baz') #1 {main} gegooid in test.php op lijn 8
  • De mogelijkheid om variabelewaarden in tekenreeksen te vervangen met behulp van de expressies "${var}" en ${(var)} is verouderd. Ondersteuning voor de veelgebruikte vervangingen "{$var}" en "$var" is behouden. Bijvoorbeeld: "Hallo {$world}"; OK "Hallo $wereld"; OK "Hallo ${wereld}"; Verouderd: het gebruik van ${} in tekenreeksen is verouderd
  • Verouderde gedeeltelijk ondersteunde callables die kunnen worden aangeroepen via "call_user_func($callable)" maar ondersteunen geen oproepen in de vorm van "$callable()": "self::method" "parent::method" "static" ::method " ["zelf", "methode"] ["bovenliggend", "methode"] ["statisch", "methode"] ["Foo", "Bar::methode"] [nieuwe Foo, "Bar::methode" ]
  • Implementatie van land-onafhankelijke case-conversie. Functies als strtolower() en strtoupper() converteren nu altijd het hoofdlettergebruik van tekens in het ASCII-bereik alsof deze zijn ingesteld op de "C"-landinstelling.

Bron: opennet.ru

Voeg een reactie