TL; DR - Nie, to wyrażenie nie może być wykonane krócej.
To, czego potrzebujesz, to skrócone potrójne wyrażenie do wykonania domyślnego isset()
. Zostało to omówione na mailing list i zostało stworzone ifsetor
RFC, które obejmuje również tę koncepcję.
Ponieważ skrócona operatora trójskładnikowych istniała już w momencie powyższej dyskusji, coś takiego było proposed użyciu nieistniejącego operatora ??
:
// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
Przypisywanie 'default value'
jeśli $v
jest niezdefiniowany.
Jednak nic takiego jak dotąd nie zostało zaimplementowane w głównym języku. Do tego czasu to, co napisałeś, nie może być krótsze.
Ten straszne konstrukt jest krótsza, ale należy pamiętać, że jest to nie ten sam ponieważ przypisuje wartość domyślną, jeśli zmienna istnieje, ale ocenia się false
:
// DO NOT USE
$v = @$v ?: 'default value';
Co jeśli '$ v' jest już ustawiony i to' „” ' lub '0' lub' null' lub 'false'? – Carlos
Rozumiem. Ale nie sądzę, że to dobre podejście ... – Carlos
@jackflash Stąd moja wzmianka o "okropnym konstrukcie" –