Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung der Pfeilfunktion von PHP 7.4

Verwendung der Pfeilfunktion von PHP 7.4

Guanhui
Guanhuinach vorne
2020-04-29 12:18:013066Durchsuche

Kurzschluss, auch Pfeilfunktion genannt, ist eine in PHP geschriebene Kurzfunktion. Diese Funktion ist nützlich, wenn Abschlüsse an Funktionen übergeben werden, z. B. bei der Verwendung von array_map- oder array_filter -Funktionen.

So sehen sie aus:

// Post 对象的集合
$posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
而以前,你必须这样写:
$ids = array_map(function ($post) {
    return $post->id;
}, $posts);

Fassen wir zusammen, wie kurze Abschlussfunktionen verwendet werden .

  • Verfügbar in PHP 7.4

  • Beginnen Sie mit dem Schlüsselwort fn

  • kann nur eines enthalten Ausdruck, das heißt, der Rückgabeausdruck

  • Rückgabeschlüsselwort kann ignoriert werden

  • Parameter und Rückgabetyphinweise können für jeden Typ

Eine strengere Typbeschränkung im obigen Beispiel kann wie folgt geschrieben werden:

$ids = array_map(fn(Post $post): int => $post->id, $posts);

Es gibt zwei Punkte, die erwähnt werden müssen:

  • ermöglicht auch die Verwendung des Spread-Operators

  • ermöglicht Referenzen, und beide Parameter können als Rückgabewerte verwendet werden

if Sie möchten ein Ergebnis per Referenz zurückgeben, die folgende Syntax sollte verwendet werden:

fn&($x) => $x

Kurz gesagt, kurze Verschlüsse funktionieren genauso wie gewöhnliche Verschlüsse, außer dass nur ein Ausdruck zulässig ist.

Einzeilige Zeile

Sie sollten es richtig verstehen: Ein kurzer Abschluss kann nur einen Ausdruck haben. Dies bedeutet, dass im Verschlusskörper keine Mehrfachleitungen vorhanden sein können.

Der Grund ist folgender: Der Zweck von Kurzschließungen besteht darin, Redundanz zu reduzieren. Natürlich ist

auf jeden Fall kürzer als fn . RFC-Erfinder Nikita Popov glaubt jedoch, dass die Verwendung von Abschlüssen noch weniger Vorteile bringt, wenn Sie mit Funktionen arbeiten, die mehrzeilige Ausdrücke sind. function

Schließlich ist die Definition von mehrzeiligen Abschlüssen bereits überflüssig, sodass es keinen großen Unterschied macht, ob diese beiden Schlüsselwörter (

und function ) vorhanden sind oder nicht. return

Ob Sie dieser Sichtweise zustimmen, bleibt Ihnen überlassen. Während mir in meinen Projekten viele Szenarien für einzeilige Abschlüsse einfallen, gibt es auch viele Szenarien für mehrzeilige Abschlüsse, und ich persönlich würde für diese Fälle eine kürzere Syntax bevorzugen.

Es gibt jedoch Hoffnung: In Zukunft könnten mehrzeilige Kurzschlüsse hinzugefügt werden, aber das wäre auch ein separater RFC.

Der Wert des äußeren Bereichs

Ein weiteres bemerkenswertes Merkmal von kurzen Schließungen und gewöhnlichen Schließungen ist, dass kurze Schließungen auf die Außenseite zugreifen können, ohne die Schlüsselwort-Bereichsdaten zu verwenden.

$modifier = 5;
array_map(fn($x) => $x * $modifier, $numbers);

Es ist zu beachten, dass Variablen im äußeren Bereich nicht geändert werden können. Weil es eher eine Wertübergabe als eine Referenzübergabe ist. Das bedeutet, dass Sie die Variable

innerhalb des kurzen Abschlusses ändern können, dies jedoch keine Auswirkungen auf die Variable $modifier im äußeren Bereich hat. $modifier

Natürlich gibt es eine Ausnahme, und das ist das Schlüsselwort

, das genau wie bei einem normalen Verschluss funktioniert: $this

array_map(fn($x) => $x * $this->modifier, $numbers);


Entwicklungsaussichten

Die bereits erwähnten Mehrlinienschließungen sind noch eine Entwicklungsmöglichkeit in der Zukunft. Eine andere Idee, die mir in den Sinn kommt, ist, die Verwendung von kurzen Abschlüssen in Klassen zu ermöglichen, wie z. B.

und getters Funktionen setters

class Post {
    private $title;
    fn getTitle() => $this->title;
}

Alles in allem sind kurze Abschlüsse eine sehr willkommene Funktion, obwohl es sie gibt viele Bereiche mit Verbesserungsbedarf. Am wahrscheinlichsten ist die mehrzeilige Schließung.

Das obige ist der detaillierte Inhalt vonVerwendung der Pfeilfunktion von PHP 7.4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen