Heim >Backend-Entwicklung >PHP-Problem >Was bedeutet PHP-Pfeil?

Was bedeutet PHP-Pfeil?

zbt
zbtOriginal
2023-06-13 11:04:291297Durchsuche

PHP-Pfeil ist ein kurzer Abschluss, auch Pfeilfunktion genannt. Es handelt sich um eine in PHP geschriebene Kurzfunktion. Diese Funktion ist sehr nützlich, wenn Abschlüsse an Funktionen übergeben werden. Ein kurzer Abschluss kann nur einen Ausdruck haben, was bedeutet, dass der Abschlusskörper nicht mehrere Zeilen enthalten kann. Der Zweck eines kurzen Abschlusses besteht darin, Redundanz zu reduzieren.

Was bedeutet PHP-Pfeil?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, PHP8.1.3-Version, DELL G3-Computer. Was bedeutet Pfeil in PHP? Diese Funktion ist sehr nützlich, z. B. die Verwendung von array_map oder array_filter-Funktion.

So sehen sie aus:// Sammlung von Post-Objekten

$posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);

Während zuvor mussten Sie so schreiben:

$ids = array_map(function ($post) {
return $post->id;
}, $posts);

Lassen Sie uns zusammenfassen, wie kurze Abschlussfunktionen verwendet werden.

In Verfügbar in PHP 7.4

Das Schlüsselwort fn kann nur einen Ausdruck enthalten, d. h. das Schlüsselwort return kann sowohl Parameter als auch Rückgabetypen für Typhinweise verwenden. Eine strengere Typbeschränkung im obigen Beispiel kann geschrieben werden als:

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

Es gibt zwei Punkte zu erwähnen:

Ermöglicht auch die Verwendung des Spread-Operators, um Referenzen zu ermöglichen, und beide Parameter können als Rückgabewerte verwendet werden

Wenn Sie möchten Um das Ergebnis per Referenz zurückzugeben, sollten Sie die folgende Syntax verwenden:

fn&($x) => $x

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

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

Hier ist der Grund: Der Zweck von Kurzschließungen besteht darin, Redundanz zu reduzieren. Natürlich ist fn in jedem Fall kürzer als die Funktion. Allerdings RFC-Erfinder Nikita Popov Ich denke, wenn Sie es mit Funktionen zu tun haben, bei denen es sich um mehrzeilige Ausdrücke handelt, profitieren Sie noch weniger von der Verwendung von Abschlüssen.

Schließlich ist die Definition des mehrzeiligen Abschlusses bereits sehr redundant, sodass es keinen großen Unterschied zwischen dem Vorhandensein und Nichtvorhandensein dieser beiden Schlüsselwörter (Funktion und Rückgabe) gibt.

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: Möglicherweise werden in Zukunft mehrzeilige Kurzschlüsse hinzugefügt, aber das wäre auch ein separater RFC.

Werte im äußeren Bereich

Ein weiteres bemerkenswertes Merkmal von kurzen Abschlüssen und gewöhnlichen Abschlüssen ist, dass kurze Abschlüsse auf Daten im äußeren Bereich zugreifen können, ohne das Schlüsselwort use 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 $modifier innerhalb des kurzen Abschlusses ändern können, die Variable im äußeren Bereich jedoch nicht. Die Variable $modifier hat Auswirkungen.

Natürlich gibt es eine Ausnahme, und das ist das Schlüsselwort $this, das genauso funktioniert wie bei einem normalen Abschluss:

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

Entwicklungsaussichten

Die bereits erwähnten mehrzeiligen Abschlüsse sind noch eine Entwicklungsmöglichkeit für die Zukunft. Eine weitere Idee in meinem Kopf ist, die Verwendung von kurzen Abschlüssen in Klassen wie Gettern und Settern zu ermöglichen Funktion.

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

Alles in allem sind kurze Schließungen ein sehr willkommenes Feature, obwohl es viele Bereiche mit Verbesserungsbedarf gibt. Der wahrscheinlichste davon sind mehrzeilige Schließungen.

Das obige ist der detaillierte Inhalt vonWas bedeutet PHP-Pfeil?. 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