Ik heb zojuist wat nieuws geleerd, en ik vroeg me af of jullie dit ook weten.

Soms heb je een simpele if else vergelijking, bijv. dit:

<?php
if (true) {
$foo = 'bar';
} else {
$foo = 'baz';
}
?>
Zo'n simpele vergelijking neemt best veel ruimte in beslag, en daarom vervang ik deze graag door:

<?php
$foo = true ? 'bar' : 'baz';
?>
Da's een stuk korter! Maar soms kan het niet op deze manier, bijv:

<?php
if (true) {
$foo = 'bar';
} else {
$bar = 'foo';
}
?>
Zijn toch best veel regels voor zo'n simpele vergelijking. Nu wist ik dat je met een enkele if-vergelijking (zonder else) dit kan doen:

<?php
if (true) $foo = 'bar'; // omdat het op 1 regel staat gebruik je geen accolades
?>
Maar wat gebeurde er zojuist. Gewoon voor de grap deed ik dit:

<?php
if (true) $foo = 'bar';
else $bar = 'foo';
?>
En dit werkt dus gewoon. Zonder enige accolade. Ik wist helemaal niet dat dat kon. Jullie wel?
Ik wist het wel, maar het is soms wel slecht voor de leesbaarheid van je code.
Ja, het ziet er inderdaad "anders" uit :) Maar het scheelt wel een hoop regels. Ik vind het wel geinig...
Zou met niet verbazen als je dit ook kan doen met if, elseif, else... Grappig :)
Is reeds bekend.
De { en } heb je eigenlijk alleen nodig als er meerdere regels bij zijn betrokken.

Zelfde geldt ook voor while(), for(), foreach() enz.
Dit is gewoon de regel in PHP. Zodra er maar 1 regel na de statement komt kun je de accolades weglaten. Dus dit kan ook:
<?php
if ($foo)
$bar = ...;
else
$foo = ...;
?>
99% van de coding standards hebben echter de regel dat je de accolades altijd moet gebruiken.
Ah oké, thanks voor de toelichting SanThe en Wouter. Ik ga m'n code eens naspitten en kijken of ik wellicht her en der wat kan inkorten :)
En waarom zou je dat willen inkorten?
Omdat m'n code dan langer wordt...

Oh nee, wacht even... "inkorten"... aha, omdat m'n code dan korter wordt!
Dat boeit toch helemaal niks? Code mag toch lang zijn? Wat je nu zegt is pure onzin.
Niks is pure onzin. Jouw stelling is pure onzin. Als ik het prettiger vind lezen dan mag ik mijn code toch inkorten? Wat is daar pure onzin aan?
Zoals ik al zei gaat dit tegen alle standards in. Niks mis mee natuurlijk, maar ze doen dit niet voor niks.

Je code wordt er allereerst erg inconsistent van. Dan wel accolades en dan weer niet. En wat denk je bijv. van een code waarin je eerst 1 regel in de statement had staan en er nu 1tje bij moet plaatsen? Dan moet je die accolades gaan plaatsen. Dat ga je geheid vergeten. En als laatst is het, imo, veel minder leesbaar. Ik moet moeite doen om dit te begrijpen:
<?php
$foo = ['bar'];
if (isset($foo))
$foo[] = 'foo';
$foo[] = 'cat';

foreach ($foo as $f)
echo $f;
?>

Reageren