Je eigen PHP-helpers in Laravel

Laravel biedt vele geweldige helper functies die handig zijn als je werkt met arrays, bestand paden, strings, routes en natuurlijk de geliefde ‘dd()’ functie.

Maar je kunt ook middels Composer je eigen set helpers voor Laravel en PHP-packets maken en automatisch inladen.

Wat is een Helper?

Om te beginnen laat ik de officiële website van Laravel je iets over helpers uitleggen.

“Laravel includes a variety of global “helper” PHP functions. Many of these functions are used by the framework itself; however, you are free to use them in your own applications if you find them convenient.”

Dus, eigenlijk zijn helpers in Laravel ingebouwde functies die je overal in je applicatie kunt gebruiken. Als ze niet waren voorzien door het framework, had je misschien je eigen Helpers moeten ontwikkelen.

Voorbeeld: dd()
De functie dd dumpt de gegeven variabelen en beëindigt de uitvoering van het script.

$array = collect(['item1', 'item2', 'item3']);dd($array);
De output van de dd($array) functie.

Voorbeeld: str_random()
De functie str_random genereert een willekeurige reeks tekens van een opgegeven lengte.

$random = str_random(40);
De output van de str_random(40) functie.

Een nieuwe Helper aanmaken in Laravel

Afhankelijk van je voorkeur kun je de locatie van je Helper bestand(en) naar eigen wens indelen, hier zijn een paar voorgestelde locaties:

  1. app/helpers.php
  2. app/Helpers/helpers.php
  3. app/Http/helpers.php

Mijn persoonlijke voorkeur gaat uit naar app/Helpers/helpers.php.

Autoloading

Om je Helper functies te gebruiken wil je ze inladen bij runtime, dus voorafgaand de overige Laravel onderdelen worden geladen. Aan het begin van mijn ‘programmeurs-carrière’ deed ik het nog op de ‘Vanilla-PHP’ manier:

require_once ROOT . '/Helpers/helpers.php';

Natuurlijk gaan we het in Laravel niet meer op deze manier doen. We hebben tegenwoordig een betere oplossing, namelijk Composer.

Open je composer.json en zoek naar "autoload" sleutel. Voeg hierin een nieuwe sleutel "files" toe met de Helper bestands-locatie "app/Helpers/helpers.php" als waarde.

"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": ["app/Helpers/helpers.php"]
},

Sla de wijzigingen op en voer composer dump-autoload uit in de terminal.

Vanaf dit moment zal Laravel je Helper bestand automatisch inladen omdat we nu gebruik maken van de Composer autoload functie.

Functies definiëren

Dit is het eenvoudige deel, maar, er zijn een paar kanttekeningen waar je op moet letten. Laravel controleert eerst of de functie al gedefinieerd is voordat het zijn functies gaat laden, zo voorkomt het conflicten. Ze doen dit door eerst function_exists te gebruiken:

if (! function_exists('mijn_functie_naam')) {
function mijn_functie_naam($token) {
// functie...
}
}

In de praktijk zullen deze conflicten niet snel voorkomen, je zult er zelf voor moeten zorgen dat je functie namen niet te globaal zijn. Je kunt de functienamen natuurlijk ook prefixen.

Meer leren?

Lees meer over autoloading in de documentatie van Composer. Of bekijk eens alle Helper functies dat Laravel al heeft ingebouwd.

stackmont

Design & Web-Application Agency in The Netherlands

Berry van der Velden

Written by

stackmont

stackmont

Design & Web-Application Agency in The Netherlands

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade