After uses for a while, this is just a potential bugger. Because it checks NULL and NULL value only. This is just not classic PHP. If you love what PHP does with if($var).... then you know what I mean. NULL is not covering empty string. So return $a??$b??$c??$d; if $b is empty string, it will be returned without checking $c and $d any more.

We have $a?:$b?:$c?:$d already, which are checking TRUE and it is very PHP. Less is more.