Задать вопрос

Как осуществлять подавление ошибок в PHP?

Я часто вижу, что пишут примерно такой код.
if(isset($arr['a']) && isset($arr['a']['b']) && isset($arr['a']['b']['c'])) {
    $v = $arr['a']['b']['c'];
}
else {
    $v = null;
}

Но ведь тоже самое, можно написать компактнее, воспользовавшись подавлением ошибки доступа к элементам массива. В случае ошибки будет возвращен null.
$v = @$arr['a']['b']['c'];
Почему многие предпочитают первый способ? Религия не позволяет использовать подавление ошибок даже для минимального выражения? Или есть еще какие-то причины?
  • Вопрос задан
  • 3148 просмотров
Подписаться 4 Оценить 1 комментарий
Ответ пользователя Назар Мокринский К ответам на вопрос (6)
nazarpc
@nazarpc
Open Source enthusiast
if(isset($arr['a']['b']['c'])) {
    $v = $arr['a']['b']['c'];
}
else {
    $v = null;
}


$v = isset($arr['a']['b']['c']) ? $arr['a']['b']['c'] : null;

Потому что:
1) сразу понятно что имелось ввиду
2) быстрее
3) ошибки нужно не допускать, а допускать и подавлять сознательно - очень плохой тон, не сразу понятно что вы ожидали получить в результате, это быдлокод, не поддающийся отладке
4) становится похоже на то, что вы вообще не понимаете, что происходит и решили просто убрать отображение ошибки, то что вы там ожидаете null не очевидно чуть менее чем полностью

$arr[$tables[$t]['name']]['rows'][$r]['cols'][$c]['format']['borders']['top']

Страшновато, но программирование не всегда белое и пушистое. Можно либо циклом проверять, либо заняться рефакторингом и сделать более удобную для работы структуру.
Ответ написан
Комментировать