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

Stepank

Новичок
serglt
1. Скажи пожалуйста, почему ты думаешь, что я использую глобальные переменные?
2. Твоя поделка мне кажется не сильно отличной от моей, но зато менее универсальной, т.к. не позволяет проверять наличие свойств объектов. Хотя для работы с ArrayObject ее действительно можно адаптировать. Я подумаю над этим.
HraKK
Я видимо совсем тупой, однако даже второй твой комментарий мне ни о чем не говорит.

-~{}~ 28.11.07 11:27:

serglt
Да еще, где в моем коде ты увидел животных? Или использование ссылок в php ты считаешь необоснованным?
 

serglt

Анус, ой, Ахтунг
Stepank
Ну во первых твоя функция абсолютно бесполезная.
PHP:
<?
error_reporting (E_ALL);

function n(&$var, $val) {
	if (isset($var)) {
		return $var;
	} else {
		return $val;
	}
}

echo "<pre>";
var_dump (n ($x, 'qwe'));
var_dump ($x);
Что мы видим? А видим мы то что после твоей функции PHP не ругнулся что переменной нету а просто он ее создал. В итоге мы имее непонятную переменную взятую из не откуда. А это уже геморой на свою задницу. А в 4 - м пыхе помоему ругнулось бы

А по поводу ссылок - это на любителя, если изменения в функции не проходят то смысла особого ее ставить я не вижу, кому надо тот поставит.
А реплики типа а почему она свойства объектов не проверяет можешь засунуть себе в духовку. Маленький пример на конкретную задачу.

И если б ты не использовал глобальные переменные у тебя б таких функций не было.


УЖАС: у него объекты с переменным количеством свойств. Если свойства нету то оно сразу есть :)
 

Stepank

Новичок
Автор оригинала: serglt
Что мы видим? А видим мы то что после твоей функции PHP не ругнулся что переменной нету а просто он ее создал. В итоге мы имее непонятную переменную взятую из не откуда. А это уже геморой на свою задницу. А в 4 - м пыхе помоему ругнулось бы
После приведенного выше кода:
PHP:
$pageType = isset ($_GET ['page']) ? $_GET ['page'] : 'list';
PHP:
function val ($arr, $key, $default = '') {
return isset ($arr [$key]) ? $arr [$key] : $default;
}
$pageType = val ($_GET, 'page', 'list');
как я понимаю происходит то же самое. Пых также не ругнулся и также создал переменную. Причем во всех случаях он не ругнулся не потому, что ему рот заткнули, а потому что он и не должен был.

А по поводу ссылок - это на любителя, если изменения в функции не проходят то смысла особого ее ставить я не вижу, кому надо тотпоставит.
В общем, это скорее вопрос вкуса. Здесь же назначение ссылки совершенно очевидно.
А до**бки типа а почему она свойства объектов не проверяет можешь засунуть себе в духовку. Маленький пример на конкретную задачу.
В общем согласен, да. Хотя все равно не понимаю, чем твоя поделка окажется лучше моей.

И если б ты не использовал глобальные переменные у тебя б таких функций не было.
УЖАС: у него объекты с переменным количеством свойств. Если свойства нету то оно сразу есть :)
Вот не поверишь, не использую я глобальные переменные. А объекты и массивы с неизвестной структурой могут взяться очень просто, например при десериализации данных.
 

serglt

Анус, ой, Ахтунг
Stepank
PHP:
<?
error_reporting (E_ALL);

$pageType = isset ($_GET ['page']) ? $_GET ['page'] : 'list';


function val ($arr, $key, $default = '') {
	return isset ($arr [$key]) ? $arr [$key] : $default;
}
$pageType = val ($_GET, 'page', 'list');

var_dump ($_GET ['page']);
Результат кода
Notice: Undefined index: page in /home/serg/www/1.php on line 11
NULL


Если бы ты хотя бы попробовал проверить работоспособность моего кода сразу же умолк бы. Как видишь у меня переменная $_GET ['page'] не создалась, и компилятор ругнулся, а в твоем случае переменная $x создана

Значение ссылки здесь совершенно не очевидно, внутри ничего не меняется и поставив ее получим только очень маленький прирост в скорости выполнения.
Сразу видно что ты кроме как php никаких языков не использовал никогда. Там бы тебя бы и научили объявлять переменные перед использованием и в написании такой функции ка n (..) ты бы не нуждался.

А по поводу глобальных переменных, пример кода в студию :)
По поводу десириализации опять отжиг :)
Тоесть получил объект не знаю чего и пытаюсть получить скорость у кружки :) И потом этой скорость манипулировать :) Молодца!
 

Anarki

Новичок
Так много написали всего, столько различных мнений.
Напишу и своё
Код:
if(@$v) $v= ...
Использование собаки либо иной самодельной функции проверки существования перед "простыми" переменными полный бред, либо это подразумевает, что человек использует register_globals, либо то, что он просто не контролирует свой код и не знает какие у него есть переменные и где они определены. Либо то и другое одновременно.
 

AmdY

Пью пиво
Команда форума
Автор оригинала: berkut
AmdY, phpdev2007 вот адекватные-ли Вы люди? проверка, была-ли отправлена форма - if (@$_POST['my_form']) - это затыкание ошибок, которых быть не должно? чем empty() не затычка? как на рынке блин.. был конкретный вопрос - чем хуже if (@$_POST) vs. if (!empty($_POST)) - кто нибудь аргументированно высказаться может, а не рассказывать про свои кашмары из
if (@$_POST['my_form']) и if (isset($_POST['my_form']))
кто ещё не улавливает разницу, ищет стену
даже для использование затычки нужно прочитать инструкцию по её применению.
 

AmdY

Пью пиво
Команда форума
Stepank, а смайл :) ты здесь зря поставил, когда правишь чужой проект с таким кодом, то нужно ставить :(
 

cDLEON

Онанист РНРСlub
Йа не вижу пользы от этого моразма.
1-3 собаки на 100 строк это не то, что не путает, даже помогает скоростью.
 

berkut

Новичок
AmdY
ты и правда не адекватен и с чтением проблемы. перечитай мой пост, который ты процитировал.
Код:
 (@$_POST) vs. if (!empty($_POST))
вот тут попробуй обосновать свою точку зрения. а то одно пустозвонство. стены как раз для пустозвонов пригодятся
 

phpdev2007

Новичок
странно вообще то php указывает что есть ошибка в входящих данных, а вы стараетесь ее игнорировать и скрыть собокаой, какая логика в этом?
экономия скорости?
я не думаю что это будет самим узким местом в любом приложении, которое сложнее "Привет Мир"
 

cDLEON

Онанист РНРСlub
странно вообще то php указывает что есть ошибка в входящих данных, а вы стараетесь ее игнорировать и скрыть собокаой, какая логика в этом?
Я её не стараюсь игнорировать. Я знаю, что она будет, и она не важна и это говорю ПХП. Я тебе привёл конкретный примёр с свитчем. Зачем что то вроверять на существование, если можно просто впихнуть сабаку, которая ни чего не изменит ВООБЩЕ. Буков станет меньше - код станет более читаемым.
Карочи....Тему пора закрывать. Она не даёт ни каких плодов. А по второму разу всё это обсуждать смысла не вижу.
Опять идёт разделение на тех, кто программирует на ПХП "правильно" (скорее всего эти люди учились в универе ну и им там промыли мозги ), и на тех, кто программирует так, как удобно. При чём первые упорно продолжают утверждать что вторые это быдлокодеры. Они пихают своих сабак, потому что мозгов не хватает обработать ошибку. И вообще....Таких как мы, можно сразу на костёр....Не хватает только фразы: "УМРИТЕ НЕВЕРНЫЕ!!!!!!" в нашу честь, которую мы на собак променяли.
 

dimagolov

Новичок
вставлю 5 копеек:
вставить собаку так, чтобы это не вышло боком даже сложнее, чем написать явно все isset и empty. вот в этом, простите за тавталогию, собака и порылась. потому что есть очень короткий перечень ситуаций когда собака может быть полезна и при этом не выходит боком.
а чайник читает такое (скажи чем собака хуже) и начинает лепить ее везде, лишь бы нотисы не сыпались в лог.

[off]
аналогия с презервативом тут прямая - можно трахаться и без него, но надо на 105% быть уверенным в партнере
[/off]
 

Ноябрь

Новичок
С. поясни твое понятие "прозрачный код"

-~{}~ 28.11.07 23:21:

Просто тут 3 лагеря..
одни считают, что с @ код более читаемый и необремененный лишними проверками существования и пустоты.
другие, что проще найти ошибку, если не использовать @, т.к затыкая все предупреждения можно случайно заткнуть важное, сильно помогающее найти ошибку в коде и логике.
третьи считают, что @ это зло.. (мля.. хоть на улицу вышли бы что ли..)
Мое мнение обосновано моим нынешним стилем программирования, и вылилось в функции, которые я написал выше..
Я попытался найти золотую середину между первым и вторым, т.е. создать конструкцию, заглушающую предупреждения более продвинутую чем @.

ИМХО то что переменную можно определить, а массив нельзя - это косяк.
 

AmdY

Пью пиво
Команда форума
berkut, о сути спора
К примеру куда удобнее писать @ чем isset()
if (@$_POST['my_form']) - это затыкание ошибок, которых быть не должно?чем empty() не затычка?
хуже, так как не даёт 100%-го ответа пришла переменная или нет.
Далее, если следовать логике, то правильна конструкция if ($_POST['my_form']), ведь на хостинге, всё-равно нотисы не показываются.
А ошибка реально происходит, она даже логируется, а логирование - это важная часть создания более-менее серьёзного проекта.
 

tf

крылья рулят
Мое мнение обосновано моим нынешним стилем программирования, и вылилось в функции, которые я написал выше..
Ноябрь, дану, давай объсняй что делает эта фунция?
PHP:
function ifIntEmp($v, $b){
	settype($intv,'int');
	if (@$v)
		$intv = intval($v);
	else
		$intv= intval($b);
	return $intv;
}
 
Сверху