TL;DR - No, that expression can't be made any shorter.
What you want is for the shortened ternary expression to perform an implicit isset()
. This has been discussed on the mailing list and an ifsetor
RFC has been created that covers the concept as well.
Since the shortened ternary operator already existed at the time of the above discussion, something like this was proposed using a non-existent operator ??
:
// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
Assign 'default value'
if $v
is undefined.
However, nothing like this has been implemented in the main language to date. Until then, what you have written can't be made any shorter.
This horrible construct is shorter, but note that it's not the same because it assigns the default value if the variable exists but evaluates to false
:
// DO NOT USE
$v = @$v ?: 'default value';
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…