Now Reading
Programmiersprache PHP 8.2 bringt Read-only-Klassen und bessere Zufallszahlen

Programmiersprache PHP 8.2 bringt Read-only-Klassen und bessere Zufallszahlen

Programmiersprache PHP 8.2 bringt Read-only-Klassen und bessere Zufallszahlen

[ad_1]

Turnusmäßig zum Jahresende ist Version 8.2 jener Programmiersprache PHP erschienen. Zu den Neuerungen in Besitz sein von Read-only-Klassen, eine API zum Generieren von Zufallszahlen, drei eigenständige Typen und eine Verknüpfung von Intersection Types und Union Types.

Read-only-Klassen erweitern dies in PHP 8.1 eingeführte Kurs jener Readonly Properties. Ist eine Lebensart qua readonly ausgezeichnet, gelten jeglicher ihre Properties qua Readonly. Außerdem ist es nicht erlaubt, jener Lebensart eine dynamische Property hinzuzufügen.

Weder nicht-typisierte noch statische Properties die Erlaubnis haben Modul einer Read-only-Lebensart sein, da beiderartig nicht readonly sein die Erlaubnis haben. Wohnhaft bei jener Vererbung zu tun sein Kindklassen ebenfalls qua readonly gekennzeichnet sein.

Dynamische Properties gelten mit dem aktuellen Release qua überholt (deprecated). Mit PHP 9.0 wird ihr Hinterlegung eine ErrorException verursachen. Eine Ausnahmefall stellt die leere stdClass dar. Um sie in regulären Klassen zu verwenden, zu tun sein sie dies Kennzeichen #[AllowDynamicProperties] nach sich ziehen.

Version 8.2 erlaubt drei neue eigenständige Typen: null, false und true. Letzterer ließ sich bisher in Union Types verwenden, um bspw. mit string|null kombinieren Nullable-Rückkaufswert zu zum Verzollen anmelden, jener entweder ein Zeichenfolge oder null ist. Nun sind jeglicher drei Typen ebenfalls qua eigenständige Typen erlaubt:

class Falsy
{
    public function alwaysFalse(): false { /* ... */ *}
    public function alwaysTrue(): true { /* ... */ *}
    public function alwaysNull(): null { /* ... */ *}
}

Ein einfaches return aus den jeweiligen Funktionen ist nicht gestattet, sondern eine mit einem Rückkaufswert null deklarierte Prozedur muss mit return null zurückkehren. Qua Motivation zu Gunsten von die Neuerung nennt jener zugehörige RFC (Request for Comments) unter anderem die Vervollständigung des Typsystems. Außerdem soll jener ungefähr seltene Kasus abgedeckt sein, dass ein Rückkaufswert jener Union null | false erfolgt, welches bisher nicht erlaubt war.

Die im aktuellen Release eingeführten Disjunctive Normal Form (DNF) Types kombinieren Union Types und Intersection Types. Die disjunktive Normalform ist eine normierte Funktionsdarstellung zu Gunsten von Boolesche Funktionen, ergo Und- mit Oder-Verknüpfungen.

Union Types gleichkommen einer Oder-Verknüpfung von Typen und sind mit | kombiniert, während Intersection Types qua Und-Verknüpfung mit & zusammenstehen. Zu Händen die verbundenen DNF-Types zu tun sein die Intersection Types mit Klammern gruppiert werden: (A&B) | (Kohlenstoff&D). Ein Anwendungsfall ist ein Intersection Type, jener Nullable ist: (IsNew & IsDone) | null.

Qua weitere sprachliche Neuerung sind die Konstanten intrinsisch von Traits nennenswert. Dieser Zugriff erfolgt hier ausschließlich via eine Lebensart, die den Trait implementiert. Dieser Kode darf nicht via den Namen des Traits gen die Konstante zupacken:

trait Foo
{
    public const CONSTANT = 1;
}

class Gaststätte
{
    use Foo;
}

var_dump(Gaststätte::CONSTANT); // 1
var_dump(Foo::CONSTANT); // Error, da Zugriff ueber Trait 

Ebenfalls neu ist, dass PHP 8.2 den Zugriff gen Properties von den in Version 8.1 eingeführten Enums in konstanten Ausquetschen mit -> erlaubt:

enum A: string {
    case Foo = 'foo';
}
 
const B = A::Foo->name;

Eine neue API zu Gunsten von Zufallszahlen soll manche Zehren jener bisherigen Implementierung beheben. Unter anderem setzte PHP bisher gen den Mersenne-Twister-Pseudozufallszahlengenerator und erlaubt nicht, ihn auszutauschen. Zudem legte sie dessen Zustand weltumspannend ab, ohne dass Programme darauf zupacken können.

Die Erweiterung ist objektorientiert und bietet Klassen zum Integrieren anderer, womöglich aktuellerer Algorithmen. Sie legen ihren State in Objekten ab, welches mehrere Sequenzen mit individuellen Seeds nebenher ermöglicht.

Weitere Neuerungen und Deprecations in PHP 8.2 lassen sich jener Benachrichtigung schlussfolgern. Eine detailliertere Übersicht findet sich in jener Dokumentation. Dieser Sourcecode und jener Link zu Windows-Binaries finden sich gen jener Download-Seite.


(rme)

[ad_2]
View Comments (0)

Leave a Reply

Your email address will not be published.

Scroll To Top