Что лучше: @ или empty?

Popoff

popoff.donetsk.ua
Что лучше: @ или empty?

какой вариант программы лучше:
PHP:
if(empty($q))
или
PHP:
if(!@$q)
?
Второй как-бы короче, но, может в нем могут возникнуть какие-нибудь ошибки или дырки?
 

Фанат

oncle terrible
Команда форума
1. использование собаки вообще, идеологически неверно.
Не хочешь видеть нотайсы - отключи глобально, а не расставляй собак сотнями.

2. нотайс был введен, наверное, не для того, чтобы от него собакой избавлялись.
В этом случае емпти более оправдано.
 

Popoff

popoff.donetsk.ua
Идеологически да, 2-й вариант вызывает предупреждение, которое просто не показывается в то время как первый вариант сделан специально для того, что бы проверять пустоту переменных.. Наверное, второй вариант все-же хуже..
 

Altex

Новичок
Согласен с Тони на 200%, тк кк всегда говорил тоже самое, но вообще эта конструкция имеет мало смысла (хотя может я и придираюсь о-)
>> if( isset( $q ) && empty( $q ) ) {...}
(если есть переменная и она пуста, то*)
 

null

Guest
Лучше вместо empty() использовать isset(), т.к. если
$q = 0;

empty($q) будет TRUE
 

tony2001

TeaM PHPClub
null:
лучше юзать то, что нужно.
иногда нужна проверка на ноль/пустую строку, иногда нет.
 

null

Guest
Originally posted by tony2001
null:
лучше юзать то, что нужно.
иногда нужна проверка на ноль/пустую строку, иногда нет.
просто предупредил, что с empty() нужно быть внимательнее...
 

Popoff

popoff.donetsk.ua
2null: ага, раз уж на то пошло, то тогда еще нужно дописать, что не строка с одним символом '0', не пустая строка, не false :)
только такие предупреждения можно по любой функции дописать :)
 

Фанат

oncle terrible
Команда форума
та же беда и у жоржа с альтексом.
если бы они думали, читая вопрос, перед тем, как писать свои ценные замечания, то поняли бы, что емпти рассматривается, как альтернатива
!$var, каковой оператор возвращает труй, И если переменной нет вовсе, И если ее значение приводится к ЛЖИ.
из чего следует, что заменой является именно емпти, а не иссет и емпти.
 

Zh0rzh

Новичок
Признаю свою ошибку.

Коснтрукция

Код:
if(empty($no_such_var)) ...;
Не выдает нотиса при любом уровне error_reporting.
Поэтому проверка с isset сдесь не нужна.
 
Сверху