Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahren Sie in drei Minuten mehr über die neuen Funktionen von PHP 7.4

Erfahren Sie in drei Minuten mehr über die neuen Funktionen von PHP 7.4

步履不停
步履不停Original
2019-06-25 14:29:206293Durchsuche

Erfahren Sie in drei Minuten mehr über die neuen Funktionen von PHP 7.4

Neue Funktionen in PHP 7.4

  • Veröffentlichungsdatum liegt möglicherweise etwa im Dezember 2019, muss jedoch noch bestätigt werden
  • Kurze Schließungen, ermöglicht mehr prägnantes einzeiliges Schreiben
  • Vorladen zur Verbesserung der Leistung
  • Geben Sie Attribute in Klassen ein
  • Benutzerdefinierte Objektserialisierung Fügt ein (de)serialisiertes Objekt hinzu. Neue Methoden
  • Verbessert Typunterschiede
  • Vereinfachter Null-Koaleszenzoperator
  • FFI eröffnet neue Möglichkeiten für die Entwicklung von PHP-Erweiterungen
  • Veraltete kurze offene Tags
  • Unterstützung des Spread-Operators in Arrays
  • Lesen Sie unten, um mehr zu erfahren

Kurzer VerschlussRFC

Das Paket mit kurzem Verschluss ermöglicht prägnanteres einzeiliges Schreiben.

array_map(function (User $user) { 
    return $user->id; 
}, $users)
rrree

Einige Hinweise zu kurzen Schließungen:

  • hat Zugriff auf den übergeordneten Bereich, es ist kein Schlüsselwort use erforderlich.
  • $this kann wie ein normaler Verschluss verwendet werden.
  • Ein kurzer Abschluss kann nur eine Zeile enthalten, nämlich die return-Anweisung.

Sie können sie hier ausführlich lesen.

Typattribut RFC

Klassenattribut kann den Typ anfordern:

array_map(fn(User $user) => $user->id, $users)

Verbesserter TypunterschiedRFC

Ich habe bereits über das Typsystem von PHP geschrieben, daher ist es schön zu sehen, dass einige grundlegende PHP-Verbesserungen vorgenommen werden.

Typunterschiede sind ein Thema, das einen Blogbeitrag wert ist: Sie können kovariate Rückgabetypen verwenden. . .

class A
{
    public string $name;

    public Foo $foo;
}

. . . und inverse Variablen.

class ParentType {}
class ChildType extends ParentType {}

class A
{
    public function covariantReturnTypes(): ParentType
    { /* … */ }
}

class B extends A
{
    public function covariantReturnTypes(): ChildType
    { /* … */ }
}

Null-KoaleszenzoperatorRFC

Muss dies nicht mehr tun:

class A
{
    public function contraVariantArguments(ChildType $type)
    { /* … */ }
}

class B extends A
{
    public function contraVariantArguments(ParentType $type)
    { /* … */ }
}

Sie können dies tun:

$data['date'] = $data['date'] ?? new DateTime();

Array Spread-Operator RFC

Jetzt können Sie den Spread-Operator mit Arrays verwenden:

$data['date'] ??= new DateTime();

Beachten Sie, dass dies nur für Arrays mit numerischen Schlüsseln funktioniert.

Foreign Function Interface RFC

Foreign Function Interface, kurz FFI, ermöglicht den Aufruf von C-Code aus dem Userland. Das bedeutet, dass PHP-Erweiterungen in reinem PHP geschrieben werden können.

Es sollte beachtet werden, dass es sich um ein komplexes Thema handelt. Um diese Funktion korrekt nutzen zu können, benötigen Sie noch C-Kenntnisse.

Vorladen RFC

Vorladen ist eine aufregende neue Funktion im Kern von PHP, die unvorhersehbare Leistungsverbesserungen bringen kann.

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 persistent machen (solange kein Stromausfall vorliegt).

Natürlich hat die Leistungsverbesserung ihren Preis: Wenn sich die Quelldatei der vorinstallierten Datei ändert, muss der Server neu gestartet werden (wenn Sie Einwände gegen diesen Teil haben, lesen Sie bitte die RFC für Details)

Benutzerdefinierte Objekte Serialisierung RFC

RFC fügt zwei neue magische Methoden hinzu: __serialize und __unserialize. Die Unterschiede zwischen diesen Methoden und __sleep und __wakeup werden im RFC besprochen.

VerbindungsprioritätRFC

Wenn Sie etwas schreiben würden wie:

$arrayA = [1, 2, 3];

$arrayB = [4, 5];

$result = [0, ...$arrayA, ...$arrayB, 6 ,7];

// [0, 1, 2, 3, 4, 5, 6, 7]

PHP würde es so kompilieren:

echo "sum: " . $a + $b;

Und PHP 8 lässt es wie folgt kompilieren:

echo ("sum: " . $a) + $b;

Wenn ein „.“ vor einem „+“- oder „-“-Ausdruck ohne Klammern auftritt, wird PHP 7.4 eine Warnung zum Abbruch der Verwendung auslösen.

Verbesserungen des RFC-Abstimmungsprozesses

Dies ist technisch gesehen kein PHP 7.4-bezogenes Update, aber es ist erwähnenswert: Die Abstimmungsregeln für RFCs haben sich geändert.

  • Sie werden immer eine Zweidrittelmehrheit benötigen, um zu bestehen.
  • Die Abstimmungszeit ist nicht kurz, alle RFCs müssen mindestens 2 Wochen geöffnet sein.

Reflections on References RFC

Bibliotheken wie der Var-Dumper von Symfony verlassen sich stark auf die Reflection-API, um Variablen zuverlässig zu sichern. Zuvor gab es keine ordnungsgemäße Reflexionsunterstützung für Referenzen, was dazu führte, dass diese Bibliotheken bei der Erkennung von Reflexionen auf Hacker angewiesen waren.

PHP 7. 4 hat eine ReflectionReference-Klasse hinzugefügt, um dieses Problem zu lösen.

添加 mb_str_split 函数 RFC

此函数提供与 str_split 多字节字符串相同的功能。

永久支持 ext-hash RFC

正如标题所说,此扩展现在可在所有 PHP 安装中永久支持使用。

默认不启用 PEAR EXTERNALS

由于 PEAR 不再支持维护,核心团队决定在 PHP 7.4 中删除它的默认安装。

密码哈希注册表RFC

对如何使用散列库进行内部更改,以便用户可以更轻松地使用它们。

弃用ext/wwdx RFC

此数据交换格式从未标准化,现在已经弃用该扩展。

PHP 短标签被弃用 RFC

短开标签 <? 已被弃用,将在 PHP 8 中删除。短声明标记 <?= 不受影响。

左关联三元运算符被弃用 RFC

三元运算符在 PHP 中有一些奇怪的怪癖。此 RFC 为嵌套的三元语句添加了弃用。在 PHP 8 中,此弃用将转换为编译时错误。

1 ? 2 : 3 ? 4 : 5;   // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok

向后不兼容的更改 UPGRADING

升级PHP版本时,您应该始终查看完整的 UPGRADING 文档。

以下是一些突出显示的向后不兼容的更改:

  • 调用 var_dump 一个 DateTimeDateTimeImmutable 实例后面将不再保留对象的可访问属性。
  • openssl_random_pseudo_bytes 将在错误情况下抛出异常。
  • 尝试序列化一个 PDOPDOStatement 实例将生成一个 Exception 而不是一个 PDOException
  • 调用 get_object_vars() 上的 ArrayObject 实例将返回的属性 ArrayObject 本身,而不是包装的数组或对象的值。请注意,(array) 强制转换不受影响。

更多PHP相关技术文章,请访问PHP教程栏目进行学习!

Das obige ist der detaillierte Inhalt vonErfahren Sie in drei Minuten mehr über die neuen Funktionen von PHP 7.4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn