Ich bin ein großer Fan von Aufzählungen. Kürzlich habe ich für ein Unternehmen gearbeitet, das C# verwendet, wo Aufzählungen häufig verwendet werden, und ich bin es gewohnt, sie jederzeit finden zu können Ich kann sie nicht finden und vermisse sie.
Ich verwende sie für alles, was eine begrenzte Anzahl möglicher Optionen hat, wie zum Beispiel den Wochentag, den Status einer Bestellung oder, wie im Beispiel unten, den Benutzertyp.
Die Verwendung von Aufzählungen hat mehrere Vorteile:
– Reduziert Fehler, die durch Vertauschen oder Tippfehler von Zahlen entstehen.
- Erleichtert die zukünftige Änderung von Werten.
– Macht den Code leichter lesbar, was bedeutet, dass sich Fehler weniger einschleichen.
– Sicherstellung der Vorwärtskompatibilität Durch die Verwendung von Aufzählungen können Sie die Wahrscheinlichkeit, dass Ihr Code fehlschlägt, erheblich reduzieren, wenn jemand den dem Mitgliedsnamen entsprechenden Wert in Zukunft ändert.
PHP selbst unterstützt keine Aufzählungen, aber es ist ziemlich einfach, mit Konstanten in Klassen äquivalente Effekte zu erzielen. Zusätzlich habe ich ein Laravel-Paket namens laravel-enum erstellt. Es ermöglicht Ihnen den Zugriff auf Hilfsfunktionen wie das Auflisten von Schlüsseln und Werten, das Anhängen von Beschreibungen an Werte und das Validieren von Anforderungen, die Aufzählungswerte erwarten.
Diese Anleitung führt Sie durch den Prozess der Installation des Laravel-Pakets, einschließlich Anwendungsbeispielen und Best Practices.
Installationspaket
Sie können den folgenden Befehl im Terminal über Composer ausführen, um das Paket zu installieren:
$ composer require bensampo/laravel-enum
Wenn Sie Laravel niedriger verwenden als In der Version 5.5 müssen Sie den Dienstanbieter zu config/app.php hinzufügen.
'BenSampo\Enum\EnumServiceProvider'
Erstellen Sie die erste Enumeration
Wir erstellen eine Enumeration für den Benutzertyp In In unserer Beispielanwendung können Benutzer einen von drei Benutzertypen haben: Administrator, kostenpflichtiges Mitglied, Mitglied.
Das Paket enthält Generatoren zum Erstellen von Aufzählungen, sodass Sie den folgenden Befehl ausführen können, um eine Aufzählung mit dem Namen UserType zu erstellen. Die Datei wird in „app/Enums/UserType.php“ erstellt
php artisan make:enum UserType
Sie In dieser Datei wird ein gewisses Maß an Gerüsten angezeigt. Am Anfang der Datei ist die Liste der möglichen Optionen als Konstanten definiert. Diese konstanten Werte werden in der Datenbank gespeichert, daher finde ich es am besten, Ganzzahlen zu verwenden. Es gibt jedoch keine Einschränkung bei der Verwendung von Ganzzahlen, solange jeder Wert eindeutig ist.
Die Optionen in diesem Beispiel sehen so aus:
const Administrator = 0; const PaidMember = 1; const Member = 2;
Speichern Sie den Wert in der Datenbank
Jetzt haben wir eine Aufzählung mit ein paar Möglichkeiten und können damit beginnen, sie zu verwenden. Beim Migrieren der Benutzertabelle können Sie Folgendes hinzufügen.
$table->tinyInteger('type')->unsigned()->default(UserType::Member);
Da null keine Option für die Aufzählung ist, müssen wir einen Standardwert dafür festlegen. In diesem Beispiel muss davon ausgegangen werden, dass der Standardbenutzer zum Standardmitglied wird.
Stellen Sie sicher, dass der Anfang der Datei eine Verwendungsanweisung für diese Aufzählung enthält.
use App\Enums\UserType;
Aufzählungen in Operationen verwenden
Da unser Benutzermodell jetzt über eine Eigenschaft vom Typ verfügt, können wir darauf zugreifen und sie mit dem Aufzählungswert vergleichen. Das ist der wahre Vorteil von Aufzählungen und der Grund, warum ich sie so mag. Schauen Sie sich unten die Anwendungsbeispiele und möglichen Alternativen an.
if ($user->type === UserType::PaidMember) { // 在这里只是做一些付费会员的事情. }
Wenn wir keine Aufzählungen verwenden, erhalten wir möglicherweise Code ähnlich dem folgenden:
if ($user->type === 1) { // Was bedeutet das? 1 bedeuten? ? // ... } if ($user->type === 'PaidMember') { // Warum zum Teufel ist das wieder ein String?
Das obige ist der detaillierte Inhalt vonVerwendung von Aufzählungen in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!