Veröffentlichung der Programmiersprache PHP 7.4

Nach einem Jahr Entwicklung wurde vorgestellt Veröffentlichung der Programmiersprache PHP 7.4. Der neue Branch umfasst eine Reihe neuer Funktionen sowie einige Änderungen, die die Kompatibilität beeinträchtigen.

Schlüssige Verbesserungen in PHP 7.4:

  • Typisierte Eigenschaften – Klassen-Eigenschaften können nun Typdeklarationen enthalten, zum Beispiel:

    class User {
    public int $id;
    public string $name;
    }

  • Kürzerer Funktionsdefinitionssyntax „fn(parameter_list) => expr“ mit Wertbindung des Geltungsbereichs. Zum Beispiel „fn($x) => $x + $y“ ist das Äquivalent zu „$fn2 = function ($x) use ($y) {return $x + $y;}“;
  • Kürzerer Zuweisungsoperator „??=“, der verwendet werden kann, um einen Standardwert festzulegen („a ??= b“ entspricht „a = a ?? b“, wenn „a“ definiert ist, wird dessen Wert beibehalten, andernfalls wird „b“ zugewiesen);
  • Eingeschränkte die Möglichkeit Beibehaltung der Vererbungshierarchie von Typen in abgeleiteten Rückgabewerten oder die Möglichkeit, die Hierarchie der grundlegenden Typen in den abgeleiteten Argumenttypen umzukehren (Kovarianten Rückgabetyp und kontravariante Argumenttypen). In PHP können jetzt folgende Konstrukte verwendet werden:

    class A {}
    class B extends A {}

    class Producer {
    public function method(): A {}
    }
    class ChildProducer extends Producer {
    public function method(): B {}
    }

  • Der Unpacker-Operator innerhalb von Arrays „…$var“ ermöglicht die Substitution vorhandener Arrays bei der Definition eines neuen Arrays;

    $parts = [‘apple’, ‘pear’];
    $fruits = [‘banana’, ‘orange’, …$parts, ‘watermelon’];
    // [‘banana’, ‘orange’, ‘apple’, ‘pear’, ‘watermelon’];

  • Möglichkeit anschauliche Darstellung großer Zahlen mit Trennzeichen in numerischen Literalen (1_000_000_00);
  • Support schwache Referenzen, die es ermöglichen, eine Referenz auf ein Objekt zu halten, ohne die Löschung des zugehörigen Objekts durch den Garbage Collector zu blockieren;
  • Neu Mechanismus zur Serialisierung von Objekten (Kombination aus Serializable und __sleep()/__wakeup()), der das Interface Serializable ersetzt, das als veraltet angesehen wird;

    // Возвращает массив, содержащий все состояния объекта;
    public function __serialize(): array;

    // Восстанавливает состояние объекта из массива
    public function __unserialize(array $data): void;

  • Die Generierung von Ausnahmen aus der Methode __toString();
  • Unterstützung für die vorzeitige Cache-Ladung des Objektcodes hinzugefügt. Um dies einzustellen, wurde der Parameter
    opcache.preload, über den Sie ein PHP-Skript angeben können, das beim Starten des Servers kompiliert und ausgeführt wird. Dieses Skript kann Opcode anderer Dateien über deren direkte Einbindung oder die Funktion opcache_compile_file(); laden.
  • Die Hash-Erweiterung hat die Funktion crc32c hinzugefügt, um Prüfziffern mithilfe des Castagnoli-Polynoms zu berechnen;
  • Die Funktion password_hash() unterstützt jetzt die Passwort-Hashing-Methoden argon2i und argin2id in der Sodium-Bibliothek, wenn PHP ohne libargon kompiliert wird;
  • Die Funktion mb_str_split() wurde hinzugefügt, die analog zu str_split() funktioniert, jedoch nicht mit Bytes, sondern mit den Positionen von Zeichen in einer mehrbytigen Zeichenkette arbeitet;
  • Die Funktion strip_tags() wurde um die Möglichkeit erweitert, ein Array von Tag-Namen zu übergeben. Statt strip_tags($str, '...') kann jetzt strip_tags($str, ['a', 'p']); verwendet werden.<a><p>’) jetzt kann strip_tags($str, [‘a’, ‘p’]); angegeben werden.
  • In proc_open() wurde die Möglichkeit eingeführt, Operanden in einem Array aufzulisten, anstatt eine Startzeichenfolge anzugeben, und es wurde die Möglichkeit zur Umleitung von Streams sowie Unterstützung für einen Null-Dateideskriptor implementiert;

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

    // Как 2>&1 в shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['redirect', 1]], $pipes);

    // как 2>/dev/null или 2>nul в shell
    proc_open($cmd, [1 => ['pipe', 'w'], 2 => ['null']], $pipes);

  • Die Erweiterungen Firebird/Interbase, Recode und WDDX sind aus der Basisauslieferung entfernt worden. Diese Erweiterungen werden jetzt über PECL verteilt;
  • In den Status 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 Typumwandlung zu real, die Verwendung des Schlüsselworts parent ohne übergeordnete Klasse, die Konfigurationsoption allow_url_include und die Anwendung von array_key_exists() auf Objekten wurden eingeführt.

    Die Funktionen get_magic_quotes_gpc(), get_magic_quotes_runtime() sind als veraltet deklariert.
    hebrevc(), convert_cyr_string(), money_format(), ezmlm_hash(), restore_include_path(), ldap_control_paged_result_response(), ldap_control_paged_result(), ReflectionType::__toString().

    Es wird eine Warnung ausgegeben, wenn versucht wird, veraltete Funktionen zu verwenden, um ungültige Zeichen in den Funktionen
    base_convert(), bindec(), octdec() und hexdec() zu verarbeiten, sowie wenn ein nicht-stringbasiertes Muster in mb_ereg_replace() angegeben wird.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster