Der Betatest von PHP 8 hat begonnen

Eingereicht von die erste Beta-Version des neuen Zweigs der Programmiersprache PHP 8. Die Veröffentlichung ist für den 26. November geplant. Gleichzeitig wurden Korrekturversionen von PHP 7.4.9, 7.3.21 und
7.2.33, die angesammelte Fehler und Schwachstellen beseitigte.

Haupt- Innovationen PHP8:

  • Включение JIT-Compiler, deren Einsatz die Produktivität verbessern wird.
  • Unterstützen benannte Funktionsargumente, mit denen Sie Werte in Bezug auf Namen an die Funktion übergeben können, d. h. Sie können Argumente in beliebiger Reihenfolge übergeben und optionale Argumente definieren. Beispiel: „array_fill(start_index: 0, num: 100, value: 50)“.
  • Beim Aufrufen von Methoden erlaubt Verwenden des „?“-Operators, der es Ihnen ermöglicht, einen Aufruf nur zu initiieren, wenn die Methode vorhanden ist, wodurch unnötige Prüfungen für die Rückgabe des „Null“-Werts vermieden werden. Beispiel: „$dateAsString = $booking->getStartDate(?->asDateTimeString()“;
  • Unterstützen Gewerkschaftstypen, Definieren von Sammlungen von zwei oder mehr Typen (z. B. „public function foo(Foo|Bar $input): int|float;“).
  • Unterstützen Attribute (Annotationen), mit denen Sie Metadaten (z. B. Typinformationen) an Klassen binden können, ohne die Docblock-Syntax zu verwenden.
  • Ausdrucksunterstützung Spiel, das im Gegensatz zu switch Werte zurückgeben kann, Kombinationsbedingungen unterstützt, strikte Typvergleiche verwendet und keine „Break“-Spezifikation erfordert.

    $result = match($input) {
    0 => „Hallo“,
    '1', '2', '3' => „Welt“,
    };

  • Verkürzte Syntax Klassendefinitionen, die es Ihnen ermöglichen, die Definition eines Konstruktors und Eigenschaften zu kombinieren.
  • Neuer Rückgabetyp - statisch.
  • Neuer Typ - gemischt, mit dem ermittelt werden kann, ob eine Funktion Parameter unterschiedlichen Typs akzeptiert.
  • Ausdruck werfen um Ausnahmen zu behandeln.
  • Schwache Karte um Objekte zu erstellen, die während der Speicherbereinigung geopfert werden können (z. B. um unnötige Caches zu speichern).
  • Gelegenheit Verwendung des Ausdrucks „::class“ für Objekte (analog zum Aufruf von get_class()).
  • Gelegenheit Definitionen im Catch-Block von Ausnahmen, die nicht an Variablen gebunden sind.
  • Gelegenheit Hinterlassen eines Kommas nach dem letzten Element in der Liste der Funktionsparameter.
  • Neue Schnittstelle Aufreihbar um alle Zeichenfolgentypen oder Daten zu identifizieren, die in eine Zeichenfolge konvertiert werden können (für die die Methode __toString() verfügbar ist).
  • Neue Funktion str_contains(), ein vereinfachtes Analogon von strpos zum Bestimmen des Vorkommens eines Teilstrings, sowie die Funktionen str_starts_with() und str_ends_with() zum Überprüfen auf Übereinstimmungen am Anfang und Ende eines Strings.
  • Funktion hinzugefügt fdiv(), das eine Divisionsoperation durchführt, ohne einen Fehler auszulösen, wenn es durch Null dividiert wird.
  • Geändert String-Verbindungslogik. Zum Beispiel der Ausdruck 'echo "sum:" . $a + $b' wurde zuvor als 'echo ("sum: " . $a) + $b' interpretiert und wird in PHP 8 als 'echo "sum: " behandelt. ($a + $b)'.
  • Verschärft Die Prüfung von Arithmetik- und Bitoperationen, beispielsweise der Ausdrücke „[] % [42]“ und „$object + 4“, führt zu einem Fehler.
  • Umgesetzt ein stabiler Sortieralgorithmus, bei dem die Reihenfolge identischer Werte über verschiedene Durchläufe hinweg erhalten bleibt.
  • Source: opennet.ru

Kommentar hinzufügen