> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Mappenstructuur

> Uitleg over de rol van de belangrijkste mappen en bestanden in een Laravel-project.

## Aan de slag

De standaard applicatiestructuur van Laravel biedt een goed startpunt voor zowel grote als kleine applicaties.
Je bent echter vrij in hoe je je applicatie organiseert.
Laravel legt nauwelijks beperkingen op aan de locatie van klassen; zolang Composer de klassen kan autoloaden, is er geen probleem.

## De rootmap

Wanneer je een nieuw Laravel-project aanmaakt, wordt de volgende mappenstructuur gegenereerd:

```
example-app/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── tests/
├── vendor/
├── .env
├── artisan
└── composer.json
```

### De map `app/`

Deze map bevat de kerncode van je applicatie.
Vrijwel alle klassen van je applicatie — controllers, modellen, middleware — komen hier terecht.

Standaard bevat hij de submappen `Http`, `Models` en `Providers`.
Wanneer je klassen genereert met Artisan-commando's, worden andere submappen automatisch aangemaakt.

### De map `bootstrap/`

Bevat het bestand `app.php` dat het framework opstart.
Daarnaast bevat hij een `cache/`-map met bestanden voor prestatie-optimalisatie, zoals de route- en servicecache.

### De map `config/`

Bevat alle configuratiebestanden van je applicatie.
Het is aan te raden deze bestanden door te lezen om te weten welke opties beschikbaar zijn.

### De map `database/`

Bevat de databasemigraties, modelfactories en seeders.
Je kunt hier ook je SQLite-databasebestand plaatsen.

### De map `public/`

Bevat `index.php`, het toegangspunt voor alle requests naar je applicatie.
Ook assets zoals afbeeldingen, JavaScript en CSS worden hier opgeslagen.

<Warning>
  Stel de documentroot van je webserver in op de map `public/` van je Laravel-project.
  Als je de projectroot of een submap rechtstreeks publiceert, loop je het risico dat vertrouwelijke bestanden worden blootgesteld.
</Warning>

### De map `resources/`

Bevat de [views](/nl/views) en de ruwe, nog niet gecompileerde assets zoals CSS en JavaScript.

### De map `routes/`

Bevat alle routedefinities van je applicatie.
Standaard bevat hij twee routebestanden: `web.php` en `console.php`.

| Bestand        | Gebruik                                                                                                                    |
| -------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `web.php`      | Routes voor de browser. De `web`-middlewaregroep wordt toegepast, die sessies, CSRF-bescherming en cookie-encryptie biedt. |
| `console.php`  | Bestand waarin je Artisan-commando's als closures definieert.                                                              |
| `api.php`      | Stateless API-routes. Voeg je toe met het commando `install:api`.                                                          |
| `channels.php` | Bestand waarin je event-broadcastkanalen registreert.                                                                      |

### De map `storage/`

Bevat door het framework gegenereerde bestanden zoals logs, gecompileerde Blade-templates, bestandsgebaseerde sessies en bestandscaches.
Hij is onderverdeeld in drie submappen: `app/`, `framework/` en `logs/`.

### De map `tests/`

Bevat je geautomatiseerde tests.
Voorbeelden van unit- en featuretests met [Pest](https://pestphp.com) of [PHPUnit](https://phpunit.de/) zijn vanaf het begin aanwezig.

### De map `vendor/`

Bevat de afhankelijkheden van [Composer](https://getcomposer.org). Commit deze map niet naar versiebeheer.

## De map `app/` in detail

Veel klassen in de map `app` kun je genereren met Artisan-commando's.
Voer het volgende uit om de beschikbare commando's te bekijken:

```shell theme={null}
php artisan list make
```

<AccordionGroup>
  <Accordion title="De map Http/">
    Bevat controllers, middleware en form requests.
    Vrijwel alle logica voor het afhandelen van requests naar je applicatie komt hier terecht.
  </Accordion>

  <Accordion title="De map Models/">
    Bevat alle [Eloquent-model](/nl/eloquent)-klassen.
    Voor elke databasetabel bestaat een "model" dat je gebruikt om data op te vragen en in te voegen.
  </Accordion>

  <Accordion title="De map Providers/">
    Bevat alle [serviceproviders](/nl/service-providers) van je applicatie.
    Serviceproviders binden services aan de container, registreren events en voeren andere taken uit om je applicatie op te starten.
  </Accordion>

  <Accordion title="De map Console/">
    Bevat al je eigen Artisan-commando's.
    Je genereert ze met het commando `make:command`.
  </Accordion>

  <Accordion title="De map Exceptions/">
    Bevat alle aangepaste exceptions van je applicatie.
    Je genereert ze met het commando `make:exception`.
  </Accordion>
</AccordionGroup>

## Belangrijke bestanden

### Het `.env`-bestand

Beheert configuratiewaarden die per omgeving verschillen (databaseverbindingsgegevens, API-sleutels, enz.).
Ze worden vanuit de configuratiebestanden in `config/` opgevraagd via de `env()`-helper.

```ini theme={null}
APP_NAME=Laravel
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost

DB_CONNECTION=sqlite
```

### Het `artisan`-bestand

Het toegangspunt van de Artisan-commandoregelinterface.
Je voert commando's uit in de vorm `php artisan <commandonaam>`.

## Volgende stappen

<Card title="Routing" icon="route" href="/nl/routing">
  Leer hoe je routes definieert en URL's koppelt aan applicatielogica.
</Card>
