Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

php целесообразность заглушки ошибок через @ в php

Саня Алцыбеев Ученик (171), на голосовании 4 года назад
Конкретный пример.
Есть простенький код (например внутри цикла foreach):
$val='test';
if (isset($string)){
$string.=','.$val;
}else{
$string=$val;
}
Его можно заменить на:
@$string.=$val;
И всё работает, ошибки не выведет. Но на сколько это целесообразно? Есть ли разница в быстродействии? какие есть недостатки у этой заглушки? Есть ли существенная разница между таким примером и другими вариантами?
Дополнен 4 года назад
Суть вопроса конкретно в использовании заглушки, не важно какой разделитель, существует ли он вообще или каждый раз разный.
Голосование за лучший ответ
MalkoR Гуру (2690) 4 года назад
1. Да, можно, но это кривой код подавление ошибок.
2. Делать подавление в этом случае, мотивирует - уменьшить код? тогда смотри такой код:
$string = isset($string) ? $string.','.$val : $val;
никакого подавления и занимает одну строку.
3. Делать так - это вообще для не опытных. Когда нужно объединить строку каким то разделителем, есть implode(), для этого это функция и была сделана.

$params = [];
....
$params[] = $val;
$params[] = $val2;
$params[] = $val3;
...Сколько угодно пишешь в $params а в конце делаешь
$string = implode(",", $params);

Вообще забудь про подавление ошибок впринцепе как о возможности такой. По факту, примерно 15 лет программирую на php много, и подавление ошибок помню еще с php 3,4 версии, там нужно было, но начиная с 5-ой версии, об этой возможности вообще забыл, и 10 лет как не использую никогда. Тебе советую того же, забудь про эту возможность )
Саня АлцыбеевУченик (171) 4 года назад
Код был для примера, но спасибо, ответ я получил
Саня Алцыбеев Ученик (171) но кстати сокращённая версия if не отменяет ошибку $string .= isset($string) ? ','.$val : $val; $string не существует, дописаться не сможет
Похожие вопросы