Как выполнить условие, если переменная не существует в скрипте

Single

пилот капсулы
почему по умолчанию NULL а не 0 или "" или true или false или вообще array ? :)

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

как будто ошибки могут происходить толко при разработке?
почему то мне всегда казалось что процесс разработки заканчивается только когда код проверян на работоспособность и полное отсутствие каких либо ошибок.
к примеру обрыв связи с БД или оборванная загрузка чего либо куда либо в моем понимании не являются ошибками, скажем так это один из предполагаемых путей работы системы для которых есть опять же свои обработчики благодаря которым система в приципе не может куда либо упасть. И да, все это чудо допиливается в течении последних 5-6 лет и на каждый чих системы есть свое лекарство.
 

korpus

злой бобёр
http://phpfaq.ru/debug2
Вот здесь сказано, почему :)

Дело не в ошибках. А в способах написания безглючного кода.
 

Фанат

oncle terrible
Команда форума
korpus
когда скрипту передается переменная через QUERY STRING, я не представляю, как может возникнуть какая-либо ситуация, связанная с переменной $a.

Single
ты не расссматриваешь такие ситуации, потому что тебе не доверяют, видимо, их рассматривать.
но все-таки, в виде одолжения, логер прикручен, ага.
можешь ответить на вопрос, почему нужно специально УМЕНЬШАТЬ количество отлавливаемых ошибок? И что плохого в том, если он будет логировать ВСЕ происходящие в системе ошибки? (я так понимаю, что E_ALL|E_STRING ты принял именно за уменьшение, а не за максимальный уровень, который имел в виду автор)
 

korpus

злой бобёр
*****
Если неправильная архитектура, то может что-то похожее вылезти. В основном всякая чушь получается, если применять нестрогое сравнение $a==NULL, $a=='' и прочие.
Плохо, что в php нет функции, которая просто могла бы определять, выделена ли память под данную переменную или нет. Мне бы с такой функцией было бы проще. isset() в этом плане работает наполовину
 

Вурдалак

Продвинутый новичок
korpus
Так при NULL память и не выделяется.

-~{}~ 11.03.10 20:08:

Понял, ты про некую внутренную запись переменной.
 

korpus

злой бобёр
Вурдалак
По моему это не так. Под FALSE выделяется. Под пустую строку выделяется. Это легко определяется при E_ALL | E_STRING и применяя строгое сравнение ===.
Так код:
unset($a);
if ($a) ...
выведет предупреждение об несуществующей переменной, а код
$a=NULL;
if ($a) ...
не выведет!
 

Fortop

Новичок
которая просто могла бы определять, выделена ли память под данную переменную или нет.
. Под FALSE выделяется. Под пустую строку выделяется. Это легко определяется при E_ALL | E_STRING и применяя строгое сравнение ===.
Что за бред?

Зачем в языке с динамической типизацией выяснять выделена ли память под переменную?
 

Фанат

oncle terrible
Команда форума
korpus
Можно привести пример того, что "может вылезти"?
Я не видел в этой теме ни одного примера работы с переменной, которая передается через QUERY STRING.

И все еще не понимаю, какой ПРАКТИЧЕСКОЙ задачей был вызван этот топик.
 

korpus

злой бобёр
*****
Это теоретические изыскания. :)
dr-sm
Знаком

Поднял тему и сам разобрался в проблеме, которые у меня были с этими переменными. Так как я не очень опытный php-программист, то открытое обсуждение мне кое-какие ньюансы разъяснило.
Всем ответившим спасибо за внимание к этому вопросу. Заканчиваем разводить флуд.
 
Сверху