## Opdracht G4 view(...)

In elke view moeten we steeds toevoegen

    require __DIR__ . "/../../app/views/parts/header.view.php";

En in elke controller

    require __DIR__ . "/../../app/views/contact.view.php";

We zouden hiervoor een functie kunnen maken

view(string $view) deze functie zorgt voor de require van de juiste view. Een nadeel, maar misschien ook een voordeel hiervan is dat wanneer de require in een functie staat dat de gedefinieerde variabele niet worden meegenomen.

Dus $title die we in onze controller hebben aangemaakt. Kan dan niet meer in de view gebruikt worden. Uiteraard zijn daar mooie oplossingen voor. We kunnen aan onze view functie meerdere parameters meegeven

    view(string $view, array $variabele);

Voorbeeld:

Als we onze views/parts/header.view.php willen aanroepen met een title kan dat op deze manier

    view("parts/header",[
        'title'=>'Contact'
    ]);

Uiteraard kunnen we ook een variabele meesturen

    view("parts/header", [
        'title' => $title
    ]);

Als we geen parameters mee willen geven kan dat ook

    view('parts/navigatie-menu');

### view functie

De functie view kan je zo ingewikkeld maken als je zelf wilt. Kopieër onderstaande code naar functions.php

    function view(string $file, array $vars = [])
    {
      extract($vars);
      if (file_exists(__DIR__ . "/../app/views/" . $file . ".view.php")) {

        require __DIR__ . "/../app/views/" . $file . ".view.php";
      } else {
        if (file_exists(__DIR__ . "/../src/views/" . $file . ".view.php")) {
          require __DIR__ . "/../src/views/" . $file . ".view.php";
        }else{
          dd('required view: /app/views/' . $file . ".view.php". ' not found');
        }
      }
    }

Hierboven is denk ik een redelijk bruikbare functie. Let op dat je de inhoud niet hoeft te begrijpen. Functie `extract($vars)` zet overigens de array `$vars` om in losse variabele.

De globale variabele __DIR__ is de webroot directory. Indien een view niet bestaat zal er een foutmelding volgen.

### Aanpassen require "...view.php"

Pas alle requires van views aan in je controllers en views. En verwijder in je controllers meteen $titel. En geef deze direct mee in de view.

Dus

    view("parts/header", ['title' => 'about']);