Die erste Beta-Version der neuen PHP 8 Programmierprache ist für den 26. November geplant. Gleichzeitig wurden Korrekturversionen von PHP 7.4.9, 7.3.21 und
7.2.33 veröffentlicht, in denen die angesammelten Fehler und Sicherheitsanfälligkeiten behoben wurden.
Haupt PHP 8:
- , dessen Einsatz die Leistung steigern wird.
- benannte Funktionsargumente, die es ermöglichen, Werte in Bezug auf ihre Namen an die Funktion zu übergeben, d.h. es können Argumente in beliebiger Reihenfolge übergeben und optionale Argumente definiert werden. Zum Beispiel: «array_fill(start_index: 0, num: 100, value: 50)».
- Bei der Methodenaufruf kann der Operator «?» verwendet werden, der es ermöglicht, den Aufruf nur zu initiieren, wenn die Methode vorhanden ist, was überflüssige Überprüfungen auf den Wert «null» vermeidet. Zum Beispiel: «$dateAsString = $booking->getStartDate()?->asDateTimeString()»;
- Support , die Sammlungen aus zwei oder mehr Typen definieren (zum Beispiel „public function foo(Foo|Bar $input): int|float;“).
- Support (Annotationen), die es ermöglichen, Metadaten (z. B. Informationen über Typen) an Klassen ohne Verwendung der Docblock-Syntax zu binden.
- Unterstützung für Ausdrucke , die im Gegensatz zu switch Werte zurückgeben können, die Kombination von Bedingungen unterstützen, strikte Typvergleiche verwenden und kein «break» erfordern.
$result = match($input) {
0 => «hello»,
‘1’, ‘2’, ‘3’ => «world»,
}; - zur Klassendefinition, der es erlaubt, Konstruktor- und Eigenschaftsdefinitionen zu kombinieren.
- Ein neuer Typ der Rückgabewerte — .
- Ein neuer Typ — , der verwendet werden kann, um einer Funktion Parameter mit unterschiedlichen Typen zu definieren.
- Ein Ausdruck zur Verarbeitung von Ausnahmen.
- zum Erstellen von Objekten, die beim Garbage Collection verworfen werden können (zum Beispiel zum Speichern optionaler Caches).
- Verwendung des Ausdrucks «::class» für Objekte (entspricht dem Aufruf von get_class()).
- Definition von Ausnahmen im catch-Block, die nicht an Variablen gebunden sind.
- Beibehaltung des Kommas nach dem letzten Element in der Parameterliste einer Funktion.
- Die neue Benutzeroberfläche zur Identifizierung beliebiger stringbasierter Typen oder Daten, die in einen String umgewandelt werden können (für die die Methode __toString() verfügbar ist).
- Neue Funktion , eine vereinfachte Alternative zu strpos zur Bestimmung des Vorkommens von Substrings sowie die Funktionen str_starts_with() und str_ends_with() zur Überprüfung auf Übereinstimmungen am Anfang und Ende des Strings.
- Funktion hinzugefügt , die eine Division durchführt, ohne einen Fehler bei einer Division durch Null zu erzeugen.
- die Logik der String-Verkettung. 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)’ behandelt wird.
- Überprüfung von arithmetischen und bitweisen Operationen, zum Beispiel werden Ausdrücke wie «[] % [42]» und «$object + 4» zu einem Fehler führen.
- ein stabiler Sortieralgorithmus, der bei unterschiedlichen Ausführungen die Reihenfolge gleicher Werte beibehält.
Quelle: opennet.ru
