Wanneer je in PHP een functie aanroept waaraan argumenten meegegeven kunnen worden dan is het van belang even stil te staan bij het volgende. Hoe worden die argumenten naar de functie gestuurd? Dat kan op twee manieren: by value en by reference.
By value
Voor eenvoudige variabelen zoals strings, integers en floats wordt automatisch alleen de waarde van de variabele verstuurd. Je kunt dus binnen de functie die waarde gebruiken om mee te rekenen. Wanneer je aan het einde van de functie het argument tig keer hebt veranderd, dan blijft de variabele die je meegaf als argument gewoon zichzelf.
By reference
Dit is heel anders als je een variabele by reference meestuurt. Voor objecten gaat het impliciet altijd op deze manier. In feite stuur je dan een verwijzing naar de variabele mee en niet de waarde ervan. Wanneer je zo’n variabele verwerkt in een functie wordt de meegestuurde variabele ook verandert en dat kan leiden tot vreemde situaties.
Klonen
Om te voorkomen dat een object dat meegestuurd wordt by reference aangepast wordt kun je de variabele klonen met het keywoord clone.
We hebben een eenvoudig voorbeeld verwerkt in de engelse versie van deze blog.