PHP Tutorial.nl

Word een PHP expert!!!

Home » Functies

Functies in PHP: Ontdek hoe je logica herbruikbaar maakt

We gaan het niveau langzaam opschroeven. We gaan het nu hebben over functies. Functies zijn geschikt om een bepaalde logica samen te voegen en deze herbruikbaar te maken.

Wat is een functie?

Een functie is een stukje logica dat kan worden uitgevoerd om een bepaalde actie uit te voeren. Deze actie kan bijvoorbeeld een bepaalde berekening of het formatteren van een opgegeven waarde zijn.

Het voordeel van functies is dat bepaalde logica is samengevoegd in een bepaald stukje code (algoritme). Stel daar een bepaalde wijziging nodig is, dan kan het in één actie worden aangepast.

In PHP zelf zitten heel veel ingebouwde functies. Zo zijn er bijvoorbeeld functies om strings naar hoofdletters om te zetten (strtoupper()), functies om de lengte van een bepaalde stringwaarde te berekenen (strlen()), en functies om arrays samen te voegen (array_merge()).

Hoe ziet een functie eruit?

We nemen de ‘leeftijdssituatie’ uit het deel over keuzes maken. We hebben dus de leeftijd en willen vervolgens een functie hebben waarmee we eenvoudig kunnen bepaalden of iemand alcohol mag kopen.

<?php
function mag_alcohol_kopen( $leeftijd ) {
    return $leeftijd <= 18;    
} 
?>

Door middel van function geven we aan dat het gaat om een functie. De naam van de functie geven we erna aan. In dit geval is het mag_alcohol_kopen. Tussen de ( en de ) geven we de parameters aan. In ons geval is dat $leeftijd. Meerdere parameters moeten gescheiden worden door een komma.

Tussen de { en de } komt de inhoud van de functie te staan. Door middel van return geven we aan dat we de waarde willen teruggeven. Als je echo gebruikt in plaats van return, zal de waarde direct worden getoond.

De functie gebruiken

We hebben nu een functie mag_alcohol_kopen. Maar daar kunnen we nog niets mee. We moeten deze gaan gebruiken (implementeren).

Stel dat we nu ergens de leeftijd hebben en we willen controleren of er op basis van de leeftijd alcohol gekocht mag worden dan kunnen we doen:

<?php
if ( mag_alcohol_kopen( $leeftijd ) ) {  
    echo "Je mag alcohol kopen!!!";
}
?>

Meerdere parameters en optionele parameters

Functies kunnen meerdere parameters accepteren. Hier is een voorbeeld van een functie die een volledige naam retourneert:

<?php
function volledige_naam( $voornaam, $achternaam ) {
    return $voornaam . ' ' . $achternaam;
}
?>

Je kunt ook optionele parameters gebruiken door een default waarde op te geven:

<?php
function begroet( $naam, $bericht = 'Hallo' ) {
    return $bericht . ', ' . $naam;
}
?>

Dit maakt de functie flexibeler, omdat je een standaardbericht hebt als er geen specifieke boodschap wordt opgegeven.

Typehinting en return types

Om ervoor te zorgen dat functies de juiste types van parameters en return waarden gebruiken, kun je typehinting toepassen. Dit helpt bij het opsporen van fouten en zorgt voor meer voorspelbare code:

<?php
function voeg_getallen_toe( int $a, int $b ): int {
    return $a + $b;
}
?>

In dit voorbeeld moeten de parameters $a en $b hele getallen zijn (int), en de functie geeft ook een geheel getal terug.

Variabelen scope in functies

Variabelen binnen functies hebben een lokale scope. Dit betekent dat ze alleen binnen de functie beschikbaar zijn:

<?php
$globalVar = 'Ik ben globaal';

function toonVariabele() {
    $localVar = 'Ik ben lokaal';
    echo $localVar;
}

toonVariabele(); // Output: Ik ben lokaal
echo $globalVar; // Output: Ik ben globaal
?>

De variabele $localVar is alleen beschikbaar binnen de functie toonVariabele(), terwijl $globalVar overal beschikbaar is.

Error handling in functies

Je kunt exceptions gebruiken om zo eenvoudig fouten binnen functies af te handelen:

<?php
function deel( $a, $b ) {
    if ( $b == 0 ) {
        throw new Exception('Delen door nul is niet toegestaan.');
    }
    return $a / $b;
}

try {
    echo deel( 10, 0 );
} catch ( Exception $e ) {
    echo 'Fout: ' . $e->getMessage();
}
?>

In dit voorbeeld wordt een uitzondering gegooid als er geprobeerd wordt te delen door nul, iets wat een veelvoorkomende fout is.

Oh nee, de leeftijdsgrens wordt opgehoogd!

In het geval van mag_alcohol_kopen kan de leeftijdsgrens eenvoudig op slechts één locatie, namelijk de functie, gewijzigd worden.

Als we een dergelijke check op bijvoorbeeld 10 plekken afzonderlijk zonder functie doen, dan is de kans aanwezig dat het ergens vergeten wordt.

Door functies te gebruiken, kunnen we deze wijzigingen centraliseren en daarmee de kans op fouten verminderen.

Callbacks

Je hebt ook functies die je als argument kunt doorgeven aan een andere functie. Dit is een zogeheten callback en het maakt je code flexibeler en dynamischer. Callbacks worden vaak gebruikt in array-manipulatie functies zoals array_map en array_filter.

Hieronder vind je een voorbeeld van een callback die wordt gebruikt om een array te filteren. In dit voorbeeld wordt een anonieme functie gebruikt als callback voor array_filter om alleen de even getallen te behouden.

<?php
$array = [1, 2, 3, 4, 5];

$even = array_filter($array, function($item) {
    return $item % 2 === 0;
});

print_r($even); // Output: [2, 4]
?>

Named parameters in PHP

Met de introductie van named parameters in PHP 8.0, kun je argumenten doorgeven aan functies op basis van de parameternaam in plaats van de positie. Dit verhoogt de leesbaarheid en daarnaast ook de flexibiliteit van je code. Named parameters maken het mogelijk om de volgorde van argumenten te veranderen en alleen de noodzakelijke argumenten op te geven.

function maakPersoon($naam, $leeftijd, $geslacht) {
    return "Naam: $naam, Leeftijd: $leeftijd, Geslacht: $geslacht";
}

echo maakPersoon(naam: "Jan", geslacht: "Mannelijk", leeftijd: 30);