PHP 7.4 wird möglicherweise im Dezember 2019 veröffentlicht. Diese Seite wird regelmäßig aktualisiert.
<strong>Preloading</strong>
<strong>Preloading</strong> rfc
Preloading
(Preloading) ist eine erstaunliche Ergänzung zum PHP-Kern, die es bringen kann einige wesentliche Leistungsverbesserungen.
Kurz gesagt: Wenn Sie heute ein Framework verwenden, müssen dessen Dateien bei jeder Anfrage geladen und neu kompiliert werden. Durch das Vorladen kann der Server PHP-Dateien beim Start in den Speicher laden und sie für alle nachfolgenden Anforderungen dauerhaft verfügbar machen.
Die erhöhte Leistung hat natürlich ihren Preis: Ändert sich die Quelle der vorinstallierten Dateien, muss der Server neu gestartet werden.
<code><strong>Typed properties</strong>
Typisierte Eigenschaften rfc
class A { public string $name; public Foo $foo; }
<strong>Improved type variance</strong>
<strong>Verbesserte Typvarianz</strong>
(verbesserte Typvarianz) Ich habe schon früher über das Typsystem von PHP gelesen, daher ist es schön, einige davon zu sehen Verbesserungen am PHP-Kern.
Typunterschiede sind ein Thema, das einen eigenen Blogbeitrag verdient.
Kurz gesagt: Sie können den
Rückgabetypclass ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } }
covariant
und verwenden Parameter. class A { public function contraVariantArguments(ChildType $type) { /* … */ } } class B extends A { public function contraVariantArguments(ParentType $type) { /* … */ } }
contravariant
Update: Der RFC befindet sich derzeit in der Abstimmungsphase, aber es sieht so aus, als würde er ohne Probleme durchgehen. </p>Foreign Function Interface<p>
<strong>Foreign Function Interface</strong>
(Foreign Function Interface) rfc
<p>Null<code><strong>Null</strong>
Merge-Zuweisungsoperator rfcTut dies nicht:
$data['date'] = $data['date'] ?? new DateTime();
Sie können dies tun:
$data['date'] ??= new DateTime();
UPDATE: Diese Funktion ist jetzt in PHP 7.4 integriert.
Benutzerdefinierte Objektserialisierung rfc
Dieser RFC fügt zwei neue magische Methoden hinzu: __serialize
und __unserialize
. Die Unterschiede zwischen diesen Methoden und den Methoden __sleep
und __wakeup
werden im RFC erläutert.
Update: RFC genehmigt. Diese Funktion wird in PHP 7.4 hinzugefügt.
<code><strong>No more narrow margins</strong>
Keine schmalen Ränder mehr rfc
<strong>Reflection for references</strong>
<a href="https://wiki.php.net/rfc/reference_reflection" target="_blank">Reflection für Referenzen</a>
Bibliotheken wie der Var-Dumper von Symfony sind stark auf die Reflection-API angewiesen, um einen zuverlässigen Dump durchzuführen Variablen. Zuvor gab es keine ordnungsgemäße Reflexionsunterstützung für Referenzen, was dazu führte, dass diese Bibliotheken auf Hacks angewiesen waren, um Referenzen zu erkennen. ReflectionReference
hinzugefügt, um dieses Problem zu lösen.
Update: RFC bestanden, Änderungen für PHP 7.4 bestätigt. mb_str_split
hinzugefügt Diese Funktion bietet die gleiche Funktionalität wie str_split, jedoch für Multibyte-Strings. ext-hash
Immer aktiviert
Wie der Titel schon sagt, ist diese Erweiterung jetzt dauerhaft in allen PHP-Installationen verfügbar. PEAR
Standardmäßig nicht aktiviert
Da PEAR nicht mehr aktiv gepflegt wird, hat das Kernteam beschlossen, seine Standardinstallation mit PHP 7.4 zu entfernen. Hashing
Password Hash () Registry
ändert intern die Art und Weise, wie die Hash-Bibliothek verwendet wird, sodass Benutzer können sie einfacher verwenden. <strong>ext / wwdx</strong>
VERALTEText/wwdx
rfc
Dieses Datenaustauschformat war noch nie verfügbar Standardisiert, seine Erweiterungen sind jetzt veraltet.
Upgrade von abwärtsinkompatiblen Änderungen
Beim Upgrade einer PHP-Version sollten Sie immer dievollständige Upgrade-Dokumentation
lesen.parent::
Hier sind einige der abwärtsinkompatiblen Änderungen hervorgehoben:
• Der Aufruf von var_dump für eine DateTime
- oder datetimevariable
-Instanz hinterlässt keine zugänglichen Eigenschaften mehr für das Objekt.
• openssl_random_pseudo_bytes
löst im Fehlerfall eine Ausnahme aus.
• Der Versuch, eine PDO
- oder PDOStatement
-Instanz zu serialisieren, generiert eine Ausnahme anstelle von PDOException
.
• Der Aufruf von ArrayObject
für eine Instanz von get_object_vars()
gibt die Eigenschaften von ArrayObject
selbst zurück und nicht den Wert des umschlossenen Arrays oder Objekts. Beachten Sie, dass (Array-)Umsetzungen nicht betroffen sind.
Übersetzt von: https://stitcher.io/blog/new-in-php-74#reflection-for-references-rfc
Verwandte Empfehlungen:
《 Der Sicherheitsunterschied zwischen PHP7 und PHP5 (Beispiel)》
《Änderungen durch PHP7s Abstract Syntax Tree (AST)》
《Ausführungsprinzip der PHP7-Sprache (PHP7-Quellcode-Analyse)》