Veröffentlichung der Programmiersprache PHP 7.4

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.

Taste Verbesserungen in PHP 7.4:

  • 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.

    $parts = ['Apfel', 'Birne'];
    $fruits = ['banana', 'orange', …$parts, 'watermelon'];
    // ['Banane', 'Orange', 'Apfel', 'Birne', 'Wassermelone'];

  • 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;

    proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);

    // 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().

Source: opennet.ru

Kommentar hinzufügen