Nach einem Jahr Entwicklung eingereicht Veröffentlichung einer Programmiersprache PHP 7.4. Der neue Zweig enthält eine Reihe neuer Funktionen sowie mehrere Änderungen, die die Kompatibilität beeinträchtigen.
Typisierte Eigenschaften – Klasseneigenschaften können jetzt Typdeklarationen enthalten, zum Beispiel:
Klasse Benutzer {
public int $id;
öffentliche Zeichenfolge $name;
}
Abgekürzt Syntax zum Definieren von Funktionen „fn(parameter_list) => expr“ mit Bereichsbindung nach Wert. Beispielsweise ist „fn($x) => $x + $y“ analog zu „$fn2 = function ($x) use ($y) {return $x + $y;}“);
Kurzschrift-Zuweisungsoperator „??=", das zum Definieren eines Standardwerts verwendet werden kann („a ??= b" ähnelt „a = a ?? b“, wenn „a“ definiert ist, wird sein Wert gespeichert, und wenn nicht definiert, wird er gespeichert erhält den Wert „b“ );
Begrenzt Gelegenheit Beibehaltung der Vererbungshierarchie von Typen in abgeleiteten Rückgabetypen oder die Möglichkeit, die Hierarchie der ursprünglichen Typen in abgeleiteten Argumenttypen umzukehren (Kovarianz Rückgabetyp und Argumenttyp-Kontravarianz). Folgende Konstrukte können nun in PHP verwendet werden:
Klasse a {}
Klasse B erweitert A {}
Klasse Produzent {
öffentliche Funktion method(): A {}
}
Die Klasse ChildProducer erweitert Producer {
öffentliche Funktion method(): B {}
}
Entpackoperator innerhalb von Arrays „…$var“, erlauben Führen Sie beim Definieren eines neuen Arrays eine Ersetzung vorhandener Arrays durch.
Gelegenheit visuelle Darstellung großer Zahlen mit Trennzeichen in numerischen Literalen (1_000_000_00);
Unterstützen schwache Glieder, die es Ihnen ermöglichen, einen Verweis auf ein Objekt beizubehalten, den Garbage Collector jedoch nicht daran hindern, das zugehörige Objekt zu löschen;
neu Mechanismus Objektserialisierung (eine Kombination aus Serializable und __sleep()/__wakeup()), die die Serializable-Schnittstelle ersetzt, die veraltet ist;
// Gibt ein Array zurück, das alle Zustände des Objekts enthält;
öffentliche Funktion __serialize(): array;
// Stellt den Zustand eines Objekts aus einem Array wieder her
öffentliche Funktion __unserialize(array $data): void;
Darf Ausnahmen von einer Methode auslösen __toString();
Unterstützung für das Vorladen des Objektcode-Cache hinzugefügt. Parameter zur Einstellung hinzugefügt opcache.vorladen, über die Sie ein PHP-Skript angeben können, das beim Start des Servers kompiliert und ausgeführt wird. Dieses Skript kann den Opcode anderer Dateien durch deren direkte Einbindung oder mithilfe der Funktion opcache_compile_file() laden;
Funktion crc32c zur Hash-Erweiterung hinzugefügt, um Prüfsummen mithilfe des Castagnoli-Polynoms zu berechnen;
Unterstützung für die Funktion „password_hash()“ für die Passwort-Hashing-Methoden argon2i und argin2id in der Implementierung der Sodium-Bibliothek hinzugefügt, wenn PHP ohne Libargon erstellt wird;
Funktion mb_str_split() hinzugefügt, ähnlich str_split(), aber nicht mit Bytes, sondern mit Zeichenpositionen in einer Multibyte-Zeichenfolge;
Die Funktion „strip_tags()“ hat jetzt die Möglichkeit, ein Array mit Tag-Namen zu übergeben, d. h. Anstelle von strip_tags($str, ' ') können Sie jetzt strip_tags($str, ['a', 'p']); angeben.
proc_open() ermöglicht die Auflistung von Operanden in einem Array statt in einem String zur Ausführung, außerdem bietet es Thread-Umleitung und Unterstützung für einen Null-Dateideskriptor;
// Wie 2>&1 in der Shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);
// wie 2>/dev/null oder 2>nul in der Shell
proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);
Firebird/Interbase-, Recode- und WDDX-Erweiterungen sind von der Basisverteilung ausgeschlossen. Diese Erweiterungen werden jetzt über PECL vertrieben;
In die Kategorie übertragen veraltet Funktionen wie verschachtelte ternäre Operatoren ohne Klammern, Zugriff auf Array-Elemente und Strings mit geschweiften Klammern („$var{$idx}“), die Funktion is_real() und Umwandlung in real, Verwendung des übergeordneten Schlüsselworts ohne übergeordnete Klasse, Parameter „allow_url_include“-Konfigurationen , mit array_key_exists() für Objekte.
Die Funktionen get_magic_quotes_gpc(), get_magic_quotes_runtime() und
hebrevc(), Convert_cyr_string(), Money_format(), ezmlm_hash(), Restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().
Beim Versuch, falsche Symbole in Funktionen zu verarbeiten, wurde eine Warnung vor der Verwendung einer veralteten Funktion angezeigt
base_convert(), bindec(), octdec() und hexdec() sowie bei Angabe eines Nicht-String-Musters in mb_ereg_replace().