While I was working on a PHP project I came across those two notations ??
and ?:
and realized that it’s not always obvious to determine when using one versus the other. That was a good candidate for a blog post.
While those operators aren’t new, they aren’t used that often, so let’s try to demystify them.
What do they shorten?
Those two operators give a way to write more concise code and shorten expressions used in PHP.
??
is same as ( !isset() || is_null() )
and
if ( ! $x ) { echo $x; } else { echo $y; }
to echo $x ?: $y
The Null Coalescing Operator ??
Basically, this operator will return the first non NULL value. This structure will return $value1
if it’s not NULL or $value2
:
echo $value1 ?? $value2;
The great thing about this operator is that you can combine multiples variables, for instance:
echo $value1 ?? $value2
?? $value3 ?? $value4;
and the first non NULL value will be echoed in this sample.
The Ternary Operator ?:
This operator isn’t going to check only via is_null()
but also: empty()
and !isset()
This would lead to a much cleaner code from this:
if( isset( $_GET['my_variable'] ) && !is_null( $_GET['my_variable'] ) ) {
$my_variable = $_GET['my_variable'];
} else if( !empty( $my_defined_variable ) ) {
$my_variable = $my_defined_variable;
} else {
$my_variable = 'whatever';
}
to this:
$my_variable = $_GET['my_variable'] ?? $my_defined_variable ?: 'whatever';
Leave a Reply
You must be logged in to post a comment.