Beste,

Wat vinden jullie mooier / hoe doen jullie dit?

Stel je wil een waarde returnen. Als het goed gaat dan wordt de waarde gereturned en als het fout gaat dan wordt false gereturned. Nu vraag ik me af wat mooier is. Zowel in het "if" en het "else" gedeelte een return zetten? Of de waarde toekennen aan een variabele en eenmaal die variabele returnen buiten het if/else statement?

Om het wat duidelijker te maken... zou jij dit doen:

<?php
// hier hebben we dus 2x een return
if (true) {
return 'mijn_waarde';
} else {
return false;
}
?>

of dit:

<?php
// hier hebben we 1x een return
if (true) {
$waarde = 'mijn_waarde';
} else {
$waarde = false;
}
return $waarde;
?>
Ik gebruik zelf je 2de optie.

En in sommige meer uitgebreidere statements gebruik ik een switch om zo aan de hand van ee returnwaarde de juiste melding/tekst weer te geven.
Als de functie vrij simpel is direct een return. Maar ik heb regelmatig dat de return langzaam wordt gevuld als het goed gaat, dan gebruik ik een variabele.
Maar is het een meer "gebruikelijk" dan het andere? Is het bijvoorbeeld gebruikelijker om per functie maar 1 return te hebben? Of maakt het niet uit als je meerdere returns hebt?
Als je je bedenkt dat er altijd maar 1 return kan plaatsvinden kan je altijd een default return aan het einde geven. Immers, komt het script daar, dan is er blijkbaar geen return mogelijk geweest en dus is de enige mogelijke return op dat punt dus false:
<?php
function getSomething( $value ){
if ( $value > 0 ){
return 'iets';
}

return false;
}
?>
Op deze manier kan je vanalles doen in je script, zonder voor alle mogelijke uitzonderingen apart false te moeten returnen. Als er iets niet klopt, wat dan ook, wordt er altijd false geretourneerd.
Dat is afhankelijk van wat er allemaal in de function wordt gedaan.

Zomaar een verzinsel:
<?php
function doeiets($var)
{
if($var == '') return false;
$var .= '.....';
switch($var)
{
case ...: $var .= '....';
break;
default: return false;
}
$var .= '.....';
return strlen($var);
}
?>
Santhe, tuurlijk zijn er op alle standaarden uitzonderingen te verzinnen waarvoor de regel niet meer op gaat. Daarom ook de uitspraak 'uitzonderingen bevestigen de regel' ;-)
SanThe, maar jouw manier zou je ook zoiets kunnen doen (klopt niet helemaal maar gaat om t idee):

<?php
function doeiets($var)
{
if($var == '') $return_value = false;
$var .= '.....';
switch($var)
{
case ...: $var .= '....';
break;
default: $return_value = false;
}
$var .= '.....';
$return_value = strlen($var);
return $return_value;
}
?>

Maar de vraag is dus nog steeds of het netjes / duidelijk / overzichtelijk / wenselijk is om meerdere returns in 1 functie te hebben. Ik meen ooit eens gehoord te hebben dat het het mooiste is om maar 1 return per functie te hebben, maar ik vraag me af of dat zijn persoonlijke mening was of dat dat een soort van "stelregel" is.
Volgens mij komt dat dan van iemand met een achtergrond in een andere taal. In bijvoorbeeld Delphi heb je geen return zoals in php, maar geef je de return waarde aan een variabele (met de naam result als ik me niet vergis) en de waarde van die variabele wordt getourneerd. Nadat je daar een waarde aan hebt gegeven gaat de executie echter gewoon door. De methode die ik boven gaf zou daar dus niet werken, want dan krijg je altijd false.

In php ken ik echter niet zo'n stelregel en ik zou geen reden weten waarom je geen twee returns in een functie zou moeten willen hebben.
Oké, thanks. Dat zou kunnen. Bedankt voor de reacties tot zover!
Als iemand nog iets wil toevoegen hoor ik het wel...
@Ozzie: Ik ga voor mijn voorbeeld en niet voor die van jou. Ik ben van mening dat, indien iets niet voldoet, er direct een return mag worden gegeven. En ook vind ik mijn methode duidelijker/overzichtelijker.

Reageren