Just a weird PHP question about best practice. Assuming the following function:
function get_option($val) {
return false;
}
I want to assign to a $locale variable, the value returned from this function and, if false, set to a default en_GB one.
I discovered 2 option for achieving this goal:
1st Option:
$locale = ( $locale = get_option( 'language_code' ) ) ? $locale : 'en_GB';
2nd Option:
$locale = get_option( 'language_code' ) ? get_option( 'language_code' ) : 'en_GB';
I would like to know which one is more correct and why.
Thanks
Both seem a bit verbose to me, to avoid duplicated calculations, I would prefer the first one (perhaps splitted to 2 lines of code).
You can create a helper function, this one has
falsehardcoded, but you could even pass it as a parameter:Then your code becomes:
Since PHP5.3 you can use the shorthand ternary operator
?:.Be aware that it will check the left-hand side argument for truthy, which prevents it to be used if the valid value you're checking evaluates to false (e.g.:
0,"","0",array()...). Because of that, I wouldn't generally recommend it, but in this case I assume the locale is a non-empty non-"0"string, so it should be fine.With PHP7 you can use the null coalesce operator
??.It checks for
NULLso you have to alter the default value returned by your function.