Нормально ли использовать
$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';