Laravel zeichnet sich durch seine Einfachheit und Leistungsfähigkeit aus. Unter seinen vielen Funktionen sind Higher-Order Messages ein Juwel, das Code ausdrucksvoller und prägnanter macht. Dieser Artikel befasst sich eingehend mit Nachrichten höherer Ordnung und ihrer Verwendung zur Verbesserung der Codelesbarkeit.
Was sind High-Level-Nachrichten?
Nachricht höherer Ordnung ist eine Methode, die für jedes Element einer Sammlung oder eines Objekts eine andere Methode aufruft, ohne eine explizite Schleife zu schreiben. Mit anderen Worten: Es handelt sich um eine syntaktische Abkürzung, die Ihren Code flüssiger und leichter lesbar macht.
Diese Funktion ist besonders nützlich, wenn Sie mit Sammlungen in Laravel arbeiten, funktioniert aber auch in anderen Kontexten.
Klassisches Beispiel: Sammlung
Schauen wir uns ein einfaches Beispiel an. Angenommen, Sie haben eine Sammlung von Benutzern und möchten alle inaktiven Benutzer aktivieren. Wenn keine übergeordnete Nachricht vorhanden ist, können Sie Folgendes schreiben:
<code class="language-php">$users = User::where('active', false)->get(); foreach ($users as $user) { $user->activate(); }</code>
Mithilfe von Nachrichten höherer Ordnung können Sie diesen Code auf eine Zeile reduzieren:
<code class="language-php">$users = User::where('active', false)->get(); $users->each->activate();</code>
Hier ist each
eine Methode der Sammlung und activate
die Methode, die Sie für jedes Element der Sammlung aufrufen möchten. Nachrichten höherer Ordnung vermeiden explizite Schleifen.
Warum High-Level-Nachrichten verwenden?
Praxisbeispiele
1. Wenden Sie die Methode auf jedes Element der Sammlung an
Angenommen, Sie haben eine Sammlung von Bestellungen und möchten alle Bestellungen als versendet markieren:
<code class="language-php">$orders = Order::where('status', 'pending')->get(); $orders->each->markAsShipped();</code>
2. Verwenden Sie Methoden zum Filtern von Sammlungen
Sie können auch Nachrichten höherer Ordnung verwenden, um Sammlungen zu filtern. Filtern Sie beispielsweise Benutzer mit bestätigter E-Mail-Adresse:
<code class="language-php">$verifiedUsers = $users->filter->hasVerifiedEmail();</code>
3. Verwenden Sie map
, um
Konvertieren Sie eine Sammlung in das Ergebnis der Anwendung einer Methode auf jedes Element. Rufen Sie beispielsweise die vollständigen Namen aller Benutzer ab:
<code class="language-php">$fullNames = $users->map->getFullName();</code>
Erweiterte Nutzung
1. Methodenkettenaufruf
Nachrichten höherer Ordnung können mit anderen Erfassungsmethoden verkettet werden, um komplexe Vorgänge auszuführen. Aktivieren Sie beispielsweise alle inaktiven Benutzer und senden Sie deren E-Mails zurück:
<code class="language-php">$emails = User::where('active', false)->get() ->each->activate() ->pluck('email');</code>
2. Wird mit eloquenten Beziehungen verwendet
Sie können auch Nachrichten höherer Ordnung mit Eloquent-Beziehungen verwenden. Angenommen, jeder Benutzer hat mehrere Beiträge und Sie möchten alle ausstehenden Beiträge veröffentlichen:
<code class="language-php">$user->posts()->where('status', 'pending')->get()->each->publish();</code>
Einschränkungen
Obwohl High-Level-Nachrichten wirkungsvoll sind, weisen sie auch einige Einschränkungen auf:
Schlussfolgerung
hohe Nachrichten sind in Laravel eine kleine, aber äußerst nützliche Funktion. Sie können dazu führen, dass Sie expressivere, einfachere und lesbarere Code schreiben und gleichzeitig die Fehlerrisiken reduzieren. Unabhängig davon, ob Sie eine Sammlung, eine beredte Beziehung oder andere Objekte verwenden, können Sie Ihren Code erheblich vereinfachen.Fragen Sie sich beim nächsten Mal die Schleife: "Kann ich hier hoch -Level -Nachrichten verwenden?"
Haben Sie im Projekt bereits Nachrichten in hoher Ebene verwendet? Bitte teilen Sie Ihre Erfahrungen und Anwendungsfälle in den Kommentaren mit!
Vergessen Sie nicht, diesen Artikel mit Ihren Kollegen von Laravel -Entwicklern zu teilen und diese praktischen Fähigkeiten verstehen zu lassen. ?
Das obige ist der detaillierte Inhalt vonVerwendung von Nachrichten höherer Ordnung für einen ausdrucksstärkeren Laravel-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!