Die Beta-Testphase von PHP 8 hat begonnen

Vorstellung die erste Betaversion des neuen Zweigs der Programmiersprache PHP 8. Der Release ist für den 26. November geplant. Gleichzeitig wurden Korrekturversionen für PHP 7.4.9, 7.3.21 und
7.2.33 veröffentlicht, in denen angesammelte Fehler und Sicherheitslücken behoben wurden.

Haupt- Neuheiten PHP 8:

  • Aktivierung des JIT-Compilers, dessen Anwendung die Leistung steigern wird.
  • Bestellen benannter Funktionsargumente, die das Übergeben von Werten an die Funktion basierend auf Namen ermöglichen, d.h. Argumente können in beliebiger Reihenfolge übergeben und optionale Argumente definiert werden. Zum Beispiel: „array_fill(start_index: 0, num: 100, value: 50)“.
  • Beim Aufruf von Methoden ist die Verwendung des Operators „?“ erlaubt, der den Aufruf nur initiiert, wenn die Methode vorhanden ist, wodurch überflüssige Nullwertprüfungen vermieden werden können. Zum Beispiel: „$dateAsString = $booking->getStartDate()?->asDateTimeString()“;
  • Bestellen Union-Typen, die Sammlungen aus zwei oder mehr Typen definieren (zum Beispiel „public function foo(Foo|Bar $input): int|float;“).
  • Bestellen Attribute (Anmerkungen), die es ermöglichen, Metadaten (zum Beispiel Typinformationen) an Klassen zu binden, ohne die Syntax von Docblock zu verwenden.
  • Unterstützung von Ausdrücken match, die im Gegensatz zu switch Werte zurückgeben können, die Kombination von Bedingungen unterstützen, strenge Typvergleiche verwenden und keine „break“-Anweisung erfordern.

    $result = match($input) {
    0 => „hello“,
    ‘1’, ‘2’, ‘3’ => „world“,
    };

  • Verkürzte Syntax für die Definition von Klassen, die es ermöglicht, die Definition des Konstruktors und der Eigenschaften zu kombinieren.
  • Ein neuer Rückgabetyp — static.
  • Ein neuer Typ — mixed, der verwendet werden kann, um die Annahme von Argumenten mit unterschiedlichen Typen in einer Funktion zu definieren.
  • Ausdruck throw zur Behandlung von Ausnahmen.
  • WeakMap zur Erstellung von Objekten, die bei der Müllabfuhr aufgegeben werden können (zum Beispiel zur Speicherung optionaler Caches).
  • Die Möglichkeit das Ausdruck „::class“ für Objekte zu verwenden (analog zu get_class()).
  • Die Möglichkeit Definitionen in einem catch-Block von Ausnahmen, die nicht an Variablen gebunden sind.
  • Die Möglichkeit das Setzen eines Kommas nach dem letzten Element in der Parameterliste einer Funktion.
  • Ein neuer Schnittstelle Stringable zur Identifizierung beliebiger String-Typen oder Daten, die in eine Zeichenkette umgewandelt werden können (für die die Methode __toString() verfügbar ist).
  • Eine neue Funktion str_contains(), ein vereinfachter Analog zu strpos zur Bestimmung des Auftretens eines Teilstrings sowie die Funktionen str_starts_with() und str_ends_with() zur Überprüfung von Übereinstimmungen am Anfang und Ende der Zeichenfolge.
  • Eine Funktion wurde hinzugefügt fdiv(), die die Division durchführt, ohne einen Fehler bei der Division durch Null zu erzeugen.
  • Ändert die Logik der Zeichenkettenverknüpfung. Zum Beispiel wurde der Ausdruck ‘echo «sum: » . $a + $b’ zuvor als ‘echo («sum: » . $a) + $b’ interpretiert, während er in PHP 8 als ‘echo «sum: » . ($a + $b)’ verarbeitet wird.
  • Verschärft die Überprüfung arithmetischer und bitweiser Operationen, zum Beispiel führen die Ausdrücke «[] % [42]» und «$object + 4» zu einem Fehler.
  • Implementiert stabiler Sortieralgorithmus, bei dem die Reihenfolge gleicher Werte bei verschiedenen Durchläufen erhalten bleibt.
  • Quelle: opennet.ru

60GB SSD 8Gb DDR4