If you do not accept the performance issue as an argument, then this is really normal. But this should not be in all cases, because @ will suppress all possible errors, even those that you did not think about. But in this case, it seems there are no other possible errors that you want to suppress.
I agree with you that preceed isset () before reading the value is very ugly, and I also do not want to write it. But inserting @ before the expression seems ugly. This can reduce readability in longer code.
The good news is that with PHP 7 can we use a much better way, a null- bound operator ?? which works as follows:
if($_GET['key'] ?? '' === '123' ) {}
This is basically a replacement:
$result = isset($value) ? $value : $anotherValue;
now you can use
$result = $value ?? $anotherValue;
source share