suchen
HeimPHP-FrameworkLaravel7 wissenswerte Laravel Best Practices

7 wissenswerte Laravel Best Practices

Jan 03, 2023 pm 08:24 PM
phplaravel

7 wissenswerte Laravel Best Practices

Jeder Webentwickler hat beim Schreiben von Code seinen eigenen Stil. Wenn wir gleichzeitig das Laravel-Framework verwenden, ist alles bereit, aber oft missbrauchen wir hier die Terminologie. Es ist keine große Sache, wenn es um verschiedene Stile geht, aber wir müssen sicherstellen, dass unser Code einem guten Stil folgt. Das bedeutet, dass unser Code erweiterbar, wartbar und testbar sein muss. [Verwandte Empfehlungen: Laravel-Video-Tutorial]

Was macht unseren Code schlecht oder gut? Da PHP eine objektorientierte Sprache ist, sollten wir objektorientierte Prinzipien wie die SOLID-Designprinzipien befolgen und die Verwendung objektorientierter Mechanismen wie Vererbung, Abstraktion usw. in Betracht ziehen. Darüber hinaus hat Laravel eine große Community und manchmal gibt es einige von der Community erstellte Konventionen. Daher können andere Laravel-Entwickler, die diese Konventionen befolgen, unseren Code besser und schneller verstehen. In diesem Artikel zeige ich Ihnen 7 Best Practices für Laravel, die auf objektorientierten Prinzipien und einigen Konventionen der Laravel-Community basieren.

1. Fettes Modell, dünner Controller

Wenn wir einen sehr komplexen Abfrage-Builder oder eine unformatierte SQL-Anweisung haben, sollten wir diese Abfrage in ein Modell oder Warehouse verschieben.

Schlecht:

<?php
public function index()
{
    $partners = Partner::where(&#39;email_verified_at&#39;, &#39;!=&#39;, null)
        ->with([&#39;products&#39; => function ($q) {
            $q->whereDate(&#39;created_at&#39;, now());
        }])
        ->get();

    return view(&#39;index&#39;, [&#39;partners&#39; => $partners]);
}

Gut:

<?php
public function index()
{
    return view(&#39;index&#39;, [&#39;partners&#39; => $this->partner->newProducts()]);
}

class Partner extends Model
{
    public function newProducts()
    {
        return $this->where(&#39;email_verified_at&#39;, &#39;!=&#39;, null)
            ->with([&#39;products&#39; => function ($q) {
                $q->whereDate(&#39;created_at&#39;, now());
            }])
            ->get();
    }
}

2. Geschäftslogik in der Serviceklasse

Im Zusammenhang mit dem ersten Punkt oben sollten wir einen Thin Controller haben und dann die gesamte Geschäftslogik in einen separaten Service verschieben Klasse. Daher sollte der Controller nur eine Verantwortung haben und wir hoffen, dass wir diesen Dienst in anderen Controllern wiederverwenden können.

Schlecht:

<?php
public function store(Request $request)
{
    $user = User::create();

    $user->update([&#39;last_login&#39; => now()]);

    dispatch(new UserCreated($user));

    // ...
}

Gut:

<?php
public function store(Request $request)
{
    $this->userService->create($request);

    ....
}

class UserService
{
    public function create($request)
    {
       // ...
    }
}

3. Eloquente Abfragen sind besser als native SQL-Anweisungen.

Die Verwendung von Eloquent für Abfragen ist besser lesbar, vermeidet SQL-Injection und ist einfach zu warten.

Schlecht:

<?php
SELECT *
FROM `articles`
WHERE EXISTS (SELECT *
              FROM `users`
              WHERE `articles`.`user_id` = `users`.`id`
              AND EXISTS (SELECT *
                          FROM `profiles`
                          WHERE `profiles`.`user_id` = `users`.`id`) 
              AND `users`.`deleted_at` IS NULL)
AND `verified` = &#39;1&#39;
AND `active` = &#39;1&#39;
ORDER BY `created_at` DESC

Gut:

<?php
Article::has(&#39;user.profile&#39;)->verified()->latest()->get();

4.DRY (Don't Repeat Yourself)

Wir sollten erwägen, die wiederverwendbaren Logik-/Komponententeile an einen separaten Ort zu verschieben.
In Blade-Vorlagen können wir Komponenten verwenden, um Front-End-Teile wiederzuverwenden. Auf dem Server können wir die Logik in eine separate Serviceklasse, den Eloquent-Bereich, verschieben oder sogar unser eigenes Paket erstellen.

<!DOCTYPE html>
<html>
<head>
<title>DRY</title>
</head>
<body>

<h1 id="Custom-nbsp-Calendar">Custom Calendar</h1>

<x-custom-calendar>

</body>
</html>

5. Führen Sie keine Abfragen in Blade-Vorlagen aus

Obwohl das Ausführen von Abfragen in Blade-Vorlagen möglich ist, sollten Sie dies lieber nicht tun.

Schlecht. Wird ein N+1-Problem verursachen.

@foreach (User::all() as $user)
    {{ $user->email }}
@endforeach

Okay:

$users = User::all(); // Server Query
@foreach ($users as $user)
    {{ $user->email }}
@endforeach

6. Datenbanktransaktionen verwenden

Wenn wir komplexe und langwierige Logik/Abfragen haben, sollten wir die Verwendung von Datenbanktransaktionen in Betracht ziehen. Mithilfe dieser Funktion können wir die Datenbank bei Bedarf problemlos zurücksetzen, um sicherzustellen, dass unsere Daten nicht in der Datenbank gespeichert werden, sodass wir sicher sein können, dass unsere Daten zuverlässig sind.

<?php
public function store(Request $request)
{
    DB::beginTransaction();
    $user = User::create();
    $response = app(&#39;service&#39;)->create($user);

    if (!$response) {
      DB::rollback();
      return;
    }
    // ...
    DB::commit();
 }

7. Text nicht fest codieren

Wir sollten keinen Text im Code/Controller fest codieren. Dies erleichtert die Wartung und Erweiterung in der Zukunft. Wenn wir dem Benutzer eine Nachricht anzeigen möchten, können wir Übersetzungen, Konstanten in Modellen/Klassen zum Festlegen beliebiger Werte oder Konfigurationsdateien zum Speichern unserer Konfiguration verwenden.

trans(&#39;user.created&#39;); // &#39;User Successfully Created&#39;
$types = Product::TYPES; // Const in a Class/Model

Originaladresse: https://cerwyn.medium.com/7-best-practices-in-laravel-you-should-know-2ed9878293de

Übersetzungsadresse: https://learnku.com/laravel/t /67021

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmiervideo! !

Das obige ist der detaillierte Inhalt von7 wissenswerte Laravel Best Practices. 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
Laravels Vielseitigkeit: Von einfachen Standorten zu komplexen SystemenLaravels Vielseitigkeit: Von einfachen Standorten zu komplexen SystemenApr 13, 2025 am 12:13 AM

Das Laravel -Entwicklungsprojekt wurde aufgrund seiner Flexibilität und Kraft ausgewählt, um den Bedürfnissen unterschiedlicher Größen und Komplexität zu entsprechen. Laravel bietet Routing-System, eloquentorm, Artisan Command Line und andere Funktionen und unterstützt die Entwicklung von einfachen Blogs bis hin zu komplexen Systemen auf Unternehmensebene.

Laravel (PHP) gegen Python: Entwicklungsumgebungen und ÖkosystemeLaravel (PHP) gegen Python: Entwicklungsumgebungen und ÖkosystemeApr 12, 2025 am 12:10 AM

Der Vergleich zwischen Laravel und Python in der Entwicklungsumgebung und dem Ökosystem ist wie folgt: 1. Die Entwicklungsumgebung von Laravel ist einfach, nur PHP und Komponist sind erforderlich. Es bietet eine umfassende Auswahl an Erweiterungspaketen wie Laravelforge, aber die Wartung des Erweiterungspakets ist möglicherweise nicht rechtzeitig. 2. Die Entwicklungsumgebung von Python ist ebenfalls einfach, nur Python und PIP sind erforderlich. Das Ökosystem ist riesig und deckt mehrere Felder ab, aber das Versions- und Abhängigkeitsmanagement kann komplex sein.

Laravel und das Backend: Logik der Webanwendungen mit Strom versorgenLaravel und das Backend: Logik der Webanwendungen mit Strom versorgenApr 11, 2025 am 11:29 AM

Wie spielt Laravel eine Rolle in der Backend -Logik? Es vereinfacht und verbessert die Backend -Entwicklung durch Routing -Systeme, eloquentorm, Authentifizierung und Autorisierung, Ereignis und Zuhörer sowie Leistungsoptimierung. 1. Das Routing -System ermöglicht die Definition der URL -Struktur und die Anforderungsverarbeitungslogik. 2.Loquentorm vereinfacht die Datenbankinteraktion. 3. Das Authentifizierungs- und Autorisierungssystem ist für die Benutzerverwaltung geeignet. 4. Die Ereignis und der Hörer implementieren locker gekoppelte Codestruktur. 5. Leistungsoptimierung verbessert die Anwendungseffizienz durch Zwischenspeicherung und Warteschlange.

Warum ist Laravel so beliebt?Warum ist Laravel so beliebt?Apr 02, 2025 pm 02:16 PM

Die Popularität von Laravel umfasst seinen vereinfachten Entwicklungsprozess, eine angenehme Entwicklungsumgebung und umfangreiche Merkmale. 1) Es absorbiert die Designphilosophie von RubyonRails und kombiniert die Flexibilität von PHP. 2) Bereitstellung von Werkzeugen wie eloquentorm, Blade Template Engine usw. zur Verbesserung der Entwicklungseffizienz. 3) Sein MVC -Architektur- und Abhängigkeitsinjektionsmechanismus macht den Code modularer und prüfbarer. 4) Bietet leistungsstarke Debugging -Tools und Leistungsoptimierungsmethoden wie Caching -Systeme und Best Practices.

Was ist besser, Django oder Laravel?Was ist besser, Django oder Laravel?Mar 28, 2025 am 10:41 AM

Sowohl Django als auch Laravel sind Full-Stack-Frameworks. Django eignet sich für Python -Entwickler und komplexe Geschäftslogik, während Laravel für PHP -Entwickler und elegante Syntax geeignet ist. 1.Django basiert auf Python und folgt der "batteriebetriebenen" Philosophie, die für schnelle Entwicklung und hohe Parallelität geeignet ist. 2. Laravel basiert auf PHP, der die Entwicklererfahrung betont und für kleine bis mittlere Projekte geeignet ist.

Welches ist besser PHP oder Laravel?Welches ist besser PHP oder Laravel?Mar 27, 2025 pm 05:31 PM

PHP und Laravel sind nicht direkt vergleichbar, da Laravel ein PHP-basierter Framework ist. 1.PHP ist für kleine Projekte oder schnelle Prototypen geeignet, da es einfach und direkt ist. 2. Laravel ist für große Projekte oder effiziente Entwicklung geeignet, da es umfangreiche Funktionen und Werkzeuge bietet, aber eine steile Lernkurve aufweist und möglicherweise nicht so gut ist wie reines PHP.

Ist Laravel ein Frontend oder ein Backend?Ist Laravel ein Frontend oder ein Backend?Mar 27, 2025 pm 05:31 PM

LaravelisabackendFrameworkBuiltonPhp, entworfene WebApplicationDevelopment.itfocuseSonserver-Sidelogic, DatabaSemanagement und Applicationsstruktur und CanBeintegratedWithFrontendTechnologies-ähnlich.

Wie erstelle und verwende ich benutzerdefinierte Blade -Direktiven in Laravel?Wie erstelle und verwende ich benutzerdefinierte Blade -Direktiven in Laravel?Mar 17, 2025 pm 02:50 PM

In dem Artikel wird das Erstellen und Verwenden benutzerdefinierter Blade -Richtlinien in Laravel erläutert, um die Vorlagen zu verbessern. Es umfasst die Definition von Direktiven, die Verwendung in Vorlagen und die Verwaltung in großen Projekten, um Vorteile wie eine verbesserte Wiederverwendbarkeit von Code und R hervorzuheben

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen