Laravel
Best practices
Praktische richtlijnen voor herkenbare, onderhoudbare en veilige Laravel-applicaties. Samengesteld voor developers en teams die hun afspraken concreet willen maken.
23 best practices
Geen best practices gevonden
Probeer een andere zoekterm of wis de filters.
Configuratie op de juiste manier gebruiken
Het configuratiesysteem van Laravel is ontworpen met een duidelijke regel: environment-variabelen zouden alleen in config-bestanden benaderd moeten worden, en applicatiecode zou altijd config() moeten gebruiken. Dit patroon zorgt ervoor dat...
Effectieve migrations schrijven
Migrations vormen de versiebeheer voor je databaseschema. Goed geschreven migrations zijn gericht, omkeerbaar en bevatten vanaf het begin de juiste indexering. Omdat migrations bevroren momentopnames zijn, vragen ze om speciale discipline,...
Ga correct om met exceptions
Laravel biedt flexibele exception handling via twee benaderingen: het co-loceren van gedrag op exception-classes of het centraliseren ervan in bootstrap/app.php. Beide benaderingen werken, de sleutel is er één kiezen en die consistent toepa...
Gebruik Action-classes voor businesslogica
Kapsel herbruikbare businessoperaties in met één doel gerichte action-classes met expliciete afhankelijkheden.
Gebruik caching effectief
De cachinglaag van Laravel biedt meerdere patronen die verder gaan dan eenvoudige get/put-operaties. Het correct gebruiken van Cache::remember(), Cache::flexible(), Cache::memo(), once(), cache tags en failover stores kan de prestaties van...
Gebruik chunking voor grote datasets
Duizenden records tegelijk in het geheugen laden kan leiden tot geheugenuitputting en trage responstijden. Laravel biedt verschillende chunking- en lazy collection-strategieën, chunk(), chunkById(), cursor(), lazy() en lazyById(), die elk g...
Gebruik de HTTP Client op de juiste manier
De HTTP Client van Laravel (gebouwd op Guzzle) biedt een vloeiende interface voor het maken van HTTP-requests naar externe API's. Correct gebruik betekent het instellen van expliciete timeouts, het implementeren van retry met backoff, het c...
Gebruik Eloquent scopes en casts
Eloquent biedt local scopes voor herbruikbare query-constraints en attribute casts voor automatische typeconversie. Door deze functies te gebruiken houd je querylogica DRY, zorg je voor consistente datatypes en maak je code expressiever. In...
Gebruik Form Request-classes
Verplaats de validatie en autorisatie van requests naar toegewijde Form Request-classes in plaats van naar controllers.
Gebruik PHPUnit of Pest voor testen
Laravel biedt first-class ondersteuning voor zowel PHPUnit als Pest als testframeworks. PHPUnit is het traditionele, class-gebaseerde testframework dat al vele jaren de standaard is in PHP, terwijl Pest een moderne, function-gebaseerde aanp...
Gebruik policies en gates voor autorisatie
Policies en gates zijn standaardcomponenten binnen Laravel die gebruikt kunnen worden om te bepalen of een actie uitgevoerd mag worden.
Gebruik route model binding
Laravels impliciete route model binding resolveert Eloquent-modellen automatisch vanuit route-parameters, waardoor handmatige findOrFail()-aanroepen overbodig worden. In combinatie met scoped bindings voor geneste resources en resource cont...
Houd commands klein en verplaats business logic naar jobs
Laravel console commands moeten lichtgewicht blijven en gericht zijn op het afhandelen van command-line input/output, terwijl complexe business logic naar queued jobs verplaatst moet worden. Dit architectuurpatroon scheidt de verantwoordeli...
Houd de standaard mappenstructuur aan
Laravel heeft een standaard mappenstructuur. De structuur kan naar wens worden aangepast, maar het is over het algemeen niet aan te raden om hier te veel van af te wijken.
Houd je aan één standaard
Uiteindelijk maakt het niet zoveel uit *welke* standaard je kiest, zolang je je er maar aan houdt. Alle (eigen) code die in een project wordt geschreven, moet zich eraan houden. Discussies over welke standaard het beste is, kosten vaak meer...
Houd je aan een standaard met automatisering
Het naleven van een bepaalde standaard kan handmatig of via geautomatiseerde tooling. Deze tooling kan de vorm aannemen van IDE-plugins, git hooks of CI/CD-stappen. Doordat de ontwikkelaar niet hoeft na te 'denken' over de *exacte* regels d...
Houd vast aan één testframework
Hoewel Pest bovenop PHPUnit is gebouwd en de twee frameworks technisch compatibel zijn, brengt het mengen van beide teststijlen in hetzelfde Laravel-project onnodige complexiteit en verwarring met zich mee. Een consistente testaanpak waarbi...
Implementeer een Content Security Policy (CSP)
Een Content Security Policy (CSP) is een security header die helpt om Cross-Site Scripting (XSS)-aanvallen en andere code-injectiekwetsbaarheden te voorkomen, door te definiëren welke bronnen van content geladen en uitgevoerd mogen worden i...
Vermijd het gebruik van Eloquent-models in migraties
Database-migraties zouden ruwe database-queries of Laravels Query Builder (DB-facade) moeten gebruiken in plaats van Eloquent-models. Hoewel het handig kan lijken om models te gebruiken voor datamanipulatie tijdens migraties, kan deze werkw...
Volg best practices voor testen
Gebruik de test-helpers en -patronen van Laravel die suites sneller, duidelijker en minder foutgevoelig maken.
Voorkom N+1 queries
Voorkom lazy loading van Eloquent-relaties in loops door gerelateerde data en counts vooraf eager te laden.
Voorkom veelvoorkomende kwetsbaarheden
Laravel biedt ingebouwde bescherming tegen de meest voorkomende kwetsbaarheden in webapplicaties, maar deze moeten correct worden gebruikt. Dit behandelt essentiële beveiligingspraktijken zoals bescherming tegen mass assignment, het voorkom...
Wachtrij-jobs correct configureren
Configureer Laravel queue-jobs met veilige timeouts, retries, uniciteit en foutafhandeling voor betrouwbaarheid in productie.