Есть ли удобная замена конструкции... if(@$v) $v=...

Фанат

oncle terrible
Команда форума
Граждане.
давайте без этого вот.

есть что сказать - говори. а в гугл сам иди. или на какие другие буквы.
 

cDLEON

Онанист РНРСlub
*****
Эммм...Помоему этот вопрос ну ни как не относится к теме топа.
Ну ведь реально видно, что пост для него - это что то вроде гарантии, какие данные передал с своего сайта, такие и получил. Что мне теперь делать? Рассказывать ему что ПОСТ можно самому формировать?
 

Ноябрь

Новичок
cDLEON
Ну уж поясните вышесказанное, т.к
PHP:
<?
echo'
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
  <input type="text" name="test" />
  <input type="submit" name="s" />
</form>';

if(isset($_POST['test'])){
	echo 'определена';
	echo '<br />';
	echo gettype($_POST['test']);
	echo '<br />';
	echo '<br />';
}

if(@$_POST['test']){
	echo 'определена и заполнена';
	echo '<br />';
	echo gettype($_POST['test']);
}
выводит
"определена
string",
если отправить данные ничего не введя и
"определена
string

определена и заполнена
string",
если все-таки что-то ввести.., т.о второе условие наглядно включает первое.
Popoff, к примеру, не поленился поделиться (и показать свои знания), за что я ему очень благодарен, а посылать куда-то могут почти все.
 

berkut

Новичок
Ноябрь измени инпут тайп на чекбокс и не отметь его

-~{}~ 27.11.07 21:36:

ох срань, я облажался

-~{}~ 27.11.07 21:38:

а нет. просто ничё не напишет
 

Ноябрь

Новичок
да уж..:))
именно, не пишет, в обоих случаях переменная неопределена, и опять второе включает первое.

-~{}~ 27.11.07 20:43:

так что проверять данные сначала isset, а затем empty ИМХО бред. Все время empty.
 

Breeze

goshogun
Команда форума
Партнер клуба
Ноябрь

@ подавляет вывод ошибок и только..
а ты должен видеть все возможные ошибки..

далее..

isset специально предназначено для проверки переменной на определенность

empty только на содержимое, и если она не выдает ошибку, то это не значит что ее надо применять везде. она применима только в том случае, если тебе неважно како тип данных внутри переменной: "", 0, "0" и что там еще есть..

иначе ты рискуешь нарваться на $_POST['field'] === 0; которое будет проставлено в форме. empty выдаст true. Но "0" тоже нужное иногда значение.
 

Ноябрь

Новичок
Breeze
согласен
кстати, а сможешь написать код, в котором поведение @ и empty будет отличаться?
 

Ноябрь

Новичок
PHP:
<?
echo'
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
  <input type="text" name="test" />
  <input type="submit" name="s" />
</form>';

if(!@$_POST['test']){
	echo 'не заполнена';
	echo '<br />';
}

if(empty($_POST['test'])){
	echo 'не заполнена по феншую';
}
в чем отличия?
 

dark-demon

d(^-^)b
> @ подавляет вывод ошибок и только..

ничего подобного. собака подавляет вывод предупреждений. в случае же ошибок пых просто делает себе сэпукку и никакое домашнее животное не в силах спасти его бренное тело от падения на твердь пятисотой ошибки...
 

Breeze

goshogun
Команда форума
Партнер клуба
cDLEON

то, что собака подавляет описано в мануале в секции Error Control Operators. что-то я там не вижу слова ВЕСЬ.

Ноябрь

в этой же секции написан Warning который тебе надо читать до просветления. Если же ты решишь отмазаться, что английский не знаешь, то не принимается.
 

Breeze

goshogun
Команда форума
Партнер клуба
dark-demon
пока писал, ты уже отредактировал :)

то, что пых с собакой молчит как Герасим -- зло собаки, вот что топикстартер должен понять

ЗЫ: я был бы не против, если бы empty выдавал notice на отсутствующую переменную
 

berkut

Новичок
присоединяюсь к вопросу Ноябрь. собака - зло, как зомбированные в один голос, а обоснований ноль. а чем это хуже в контексте, который привёл Ноябрь?
 

Фанат

oncle terrible
Команда форума
Я уже все объяснил.
Повторяю ещё раз.
В данном конкретном случае, когда собака затыкает нотис про андефайнед, это не зло, а просто непонимание, о чем идет речь.
Собака используется, как затычка от нотиса.
То есть, программист полагает, будто разработуиеи пхп сделали этот нотис для того, чтобы ему просто было не скучно.
 

berkut

Новичок
tf ниадного низнаю. даже с русским плоха справляюсь. а чем вызван интерес?

-~{}~ 27.11.07 23:59:

То есть, программист полагает, будто разработуиеи пхп сделали этот нотис для того, чтобы ему просто было не скучно.
а по большому счёту, empty() не затыкает нотис???
 

Фанат

oncle terrible
Команда форума
если программист использует её, чтобы заткнуть нотис, то затыкает
если в алгоритме стоит проверка на не пустоту, то емпти реализует часть алгоритма.

Как я уже говорил раньше, но до многих не доходит - обращение к любой переменной в программе не должно вызывать нотис.
вот конечная цель всех телодвижений.
если ты определил все переменные перед использованием - ты вылечил болезнь.
Если ты поставил собаку - ты вылечил симптом.
 

cDLEON

Онанист РНРСlub
berkut
читаем 2-3 страницу.
По второму кругу уже обсуждение пошло.
 
Сверху