web2 logo

Functies maken en gebruiken

Een functie is een blok code die steeds opnieuw gebruikt kan worden. Je kan een functie maken door het function keyword te gebruiken, dan de naam die je aan de functie wil geven, dan haakjes ( ) met daar in een parameterlijst (die mag ook leeg zijn), vervolgens tussen gekrulde haken { } de opdrachten die moeten worden uitgevoerd als de functie wordt aangeroepen.

Voorbeeld met parameters:
Function mijnsom($parameter1,$parameter2){ $som = $parameter1 + $parameter2; return $som; } Voorbeeld zonder parameters:
function muntje_gooien() { $munt = (mt_rand(0, 1) == 0) ? 'kop' : 'munt'; return $munt; }
De naam van de functie moet beginnen met een letter of een underscore (liggend streepje). De rest van de naam mag behalve letters en underscores ook nog cijfers bevatten. Als je een reeks functies maakt die op de een of andere manier bij elkaar horen, dan kan je de namen van die functies allemaal met dezelfde prefix laten beginnen. Dit kan naamconflicten voorkomen. Functienamen moeten uniek zijn, dubbele namen mag niet. Alle functies die iets met bestellingen doen kunnen dan bijvoorbeeld een naam hebben die steeds begint met bestellingen_.
Een groep functies die bij elkaar horen en die je in meerdere projecten wil gebruiken, kan je in een apart bestand zetten en dan via een require_once toevoegen aan je script.
Tussen de gekrulde haken { } staan de opdrachten voor de functie. Hier kan ook een return opdracht staan, dit is niet verplicht. De return opdracht stopt het uitvoeren van de functie en geeft een waarde terug. Die waarde kan je aan de return opdracht meegeven, als je niets meegeeft, dan geeft de functie NULL terug. Hoewel je slechts 1 waarde mag meegeven via return, mag dit ook een array zijn, waardoor je toch meerdere waaarden kan teruggeven.
Je kan de return-waarde van een functie weergeven via echo. Je kan de return-waarde ook opslaan in een variabele:
echo muntje_gooien(); $totaal = mijnsom(7,9);
Het aanroepen van een functie kan met de naam van de functie en tussen haakjes de eventuele parameters. De volgorde van de parameterlijst bij het maken van de functie moet ook worden aangehouden bij het aanroepen van de functie, ook de datatypen moeten gelijk zijn. Als er bijvoorbeeld een string verwacht wordt volgens de parameterlijst, dan moet je ook een string meegeven als parameter.
Als je een variabele als parameter meegeeft aan een functie, dan wordt de waarde van die variabele als parameter gebruikt door de functie. De variabele zelf blijft onveranderd. Als je toch wil dat de variabele die je als parameter aan een functie meegeeft wordt aangepast door de functie, dan moet je de variabele een ampersand (&) als prefix geven, php geeft dan een pointer naar de variabele door aan de functie in plaats van de waarde van de variabele.

Voorbeeld:
$mijntekst = 'feestganger'; function hallo(&$mijntekst){ $mijntekst = 'Hallo ' . $mijntekst; echo $mijntekst; } echo 'br'; echo $mijntekst; De variabele $mijntekst zal nu, net als de functie, 'Hallo feestganger' geven.

De zichtbaarheid van variabelen en functies

Variabelen in een functie zijn alleen zichtbaar in die functie (lokaal), niet daarbuiten. Variabelen buiten functies zijn niet zichtbaar in functies, tenzij deze gedeclareerd worden als global.
Een andere methode om de waarde van een variabele van buiten de functie naar binnen te halen is het gebruik van de $GLOBALS array. Deze array is overal in de code beschikbaar, ook in functies.
Voorbeeld:
$doos = 'vol'; function dooskijken1(){ echo $doos; // is hier NULL, want onbekend } function dooskijken2(){ global $doos; echo $doos; // is hier 'vol', want global } function dooskijken3(){ $kijkdoos = $GLOBALS['doos']; // $kijkdoos is nu gelijk aan de global variabele $doos echo $kijkdoos; // is hier 'vol', want gelijk aan $doos }
Bij functies is er geen onderscheid tussen lokaal en globaal, alle functies zijn global, ook functies die binnen een andere functie gedeclareerd worden. Elke functie kan overal in je script aangeroepen worden.

Defaults meegeven aan parameters

Je kan een defaultwaarde meegeven in de parameterlijst van een functie. Deze parameter wordt dan optioneel, als bij het aanroepen van de functie deze parameter niet wordt meegegeven, dan krijgt deze automatisch de defaultwaarde.
De defaultwaarde moet een letterlijke waarde zijn, mag dus geen variabele zijn, maar moet echt een getal of een string zijn, of een array hiervan.
Als je meerdere parameters laat meegeven aan een functie, dan moet je de parameters die een defaultwaarde hebben als laatste in de parameterlijst zetten, dan kunnen deze bij het aanroepen van de functie eventueel weggelaten worden.

Voorbeeld:
function mijnfunctie($verplichtnummer,$nietverplichtnummer = 26){ // ... hier de opdrachten die uitgevoerd moeten worden // indien deze functie wordt aangeroepen met // slechts 1 parameter, dan krijgt de tweede // parameter $nietverplichtnummer automatisch // de waarde 26 }

Functies met een variabel aantal parameters

Het is mogelijk om functies te maken die een variabel aantal parameters ontvangen.
Er zijn in php ingebouwde functies beschikbaar om met het wisselend aantal parameters in een functie te werken. Bij het maken van een functie die een variabel aantal parameters accepteert, kan je de parameterlijst leeg laten, dan is het minimum aantal parameters dat moet worden meegegeven bij het aanroepen van de functie 0. Als je wel parameters meegeeft bij het maken van een functie, dan moeten minimaal die opgegeven parameters worden meegegeven bij het aantoepen van de functie, meer parameters mag ook, die worden dan gebruikt in de functie met behulp van de in php ingebouwde functies voor een variabel aantal parameters.

func_get_args()
Geeft een array met alle parameters die aan de functie zijn meegegeven.

func_num_args()
Geeft hoeveel parameters er aan de functie zijn meegegeven.

func_get_arg($i)
Geeft de waarde van de parameter met index $i, de index start bij 0.

Voorbeeld:
// deze functie accepteert // een willekeurig aantal getallen als parameters en // geeft het totaal van al die getallen terug. function allesoptellen() { $getallen = func_get_args(); $totaal = 0; foreach($getallen as $getal) { $totaal += $getal; } return $totaal; } Als je in het bovenstaande voorbeeld
function allesoptellen($x) {
zou gebruiken, dan is het minumum aantal parameters dat je moet gebruken 1, de rest van de functie kan dan hetzelfde blijven, de array die via
$getallen = func_get_args();
wordt opgehaald bevat alle parameters, dus inclusief de verplichte $x.

Toegevoegd door: Kees de Keijzer
Twitter: @kdkq

~ php ~

~ Onderwerpen ~

Dit is een website zonder pop-ups

~ Links ~

Design & Development by Cyberwebdesign.nl for web2.nl © 2020.