Нормально ли использовать
$c = @$a ? : 'default';
вместо
$c = isset($a) ? $a : 'default';
?
И вроде ошибка, всего лишь, уровня
E_NOTICE
, а
@
смущает все равно. С другой стороны — удобно же!
Кто как считает?
UPD1: Так как
empty()
игнорирует неопределенную переменную, а «Таблица сравнения типов в PHP» говорит, что
!empty()
полностью соответствует нестрогому булеву, то корректнее была бы замена:
$c = !empty($a) ? $a : 'default';
на
$c = @$a ? : 'default';
UPD2: (так как никто не читает уточнения). Рассматриваются, как основные варианты, так же доступ к неопределенным ключам массивов и магическим свойствам объекта, которые могут быть заданы извне.
$e = !empty($array['doubtful']['element']) ? $array['doubtful']['element'] : 'default';
// and
$e = @$array['doubtful']['element'] ? : 'default';
$p = !empty($object->magicProperty) ? $object->magicProperty : 'default';
// and
$p = @$object->magicProperty ? : 'default';