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

Was bedeutet PHP-Pfeil?

Jun 13, 2023 am 11:04 AM
php

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);
Nach dem Login kopieren

Während zuvor mussten Sie so schreiben:

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

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);
Nach dem Login kopieren

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
Nach dem Login kopieren

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);
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles