PHP de juiste manier: if-else-statements

— by Jan Valkenburg in Development
Read time: 3 min

Wellicht één van de meeste gebruikte onderdelen binnen programmeren is de if-else-statement.

PHP de juiste manier: if-else-statements

Hiermee bepaal je de conditie wanneer een bepaalde actie moet worden uitgevoerd door het script. Voor de if-else-statement bestaan meerdere schrijfwijzen, maar wat is eigenlijk de juiste? In dit artikel laat ik verschillende technieken zien en geef ik mijn visie op of dit de juiste manier is, of juist niet.

if-else-statement

Om af te trappen begin ik met een methode die ik persoonlijk afwijs: de if-else-statement zonder accolades.

if ($foo == 1)
echo 'Hello world';
elseif ($foo == 2)
echo 'Hello second world';
else
echo 'Goodbye world';​​

Nu vraag je je af waarom bovenstaande code fout is. In mijn ogen zijn er twee redenen. De eerste is leesbaarheid. Je ziet namelijk niet waar de uitvoerende code begint en eindigt. Door juist gebruik van inspringing wordt dit nog enigszins verzacht. De tweede reden is dat er eenvoudig onverwacht gedrag in kan sluipen. Een goed voorbeeld hiervan is de "goto-fail" van Apple. Een fout die voorkomen had kunnen worden door de if-else-statement correct te schrijven. De onderstaande schrijfwijze geef ik persoonlijk de voorkeur en adviseer ik vanwege leesbaarheid en het beperken van fouten.

if ($foo === 1) {
echo 'Hello world';
}
elseif ($foo === 2) {
echo 'Hello second world';
}
else {
echo 'Goodbye world';
}​​

Templates

Wanneer if-else-statement in HTML-template toepast word, zie ik dat er vaak word gekozen voor de verkeerde techniek, meestal uit onwetendheid. Dat is namelijk de volgende techniek.

<? if ($foo == 1) { ?>
Hello world
<? } elseif ($foo == 2) { ?>
Hello second world
<? } else { ?>
Goodbye world
<? } ?>

Zoals hierbij direct opvalt is dat de leesbaarheid ten wensen overlaat. Tevens zul je merken dat wanneer er meer uitvoerende code in de if-else-statement staat dat je het begin en einde ervan niet meer kan herleiden. Heel belangrijk hierbij is het juist laten inspringen van de code. Verder is er voor templates een aparte syntax bedacht namelijk de if-else-endif-statement.

<? if ($foo == 1): ?>
Hello world
<? elseif ($foo == 2): ?>
Hello second world
<? else: ?>
Goodbye world
<? endif ?>​​

Door hiervan gebruik te maken verhoog je de leesbaarheid van de code enorm. Door gebruik te maken van endif laat je duidelijk zien wat je laat eindigen in je code.

Verkorte if-else-statement

Tot slot hebben we de verkorte if-else-statement. Deze variant word veelal gebruikt om het script in te korten. Nadeel is wel dat de leesbaarheid van de code achteruit gaat. Gebruik deze variant dan ook alleen voor simpele bewerkingen.

echo ($foo == 1) ? 'Hello world' : 'Goodbye world';​​

Conclusie

Zoals hierboven te lezen is zijn er verschillende schrijfwijzes. Geen van allen is goed of fout, maar hou wel in gedachten dat consistentie en leesbaarheid heel belangrijk is voor leesbare code.

My blog doesn't support comments yet.
You can reply via e-mail or on Mastadon.