Почему некоторые программисты используют это условие «если» (и что нужно сделать, чтобы оно работало) - PullRequest
1 голос
/ 19 сентября 2011

Почему многие программисты используют:

if ($_GET['var'] or $this->error)

вместо

if (isset($_GET['var']) or isset($this->error)

без добавления

        error_reporting( error_reporting() & ~E_NOTICE )

или, (короче, но медленнее)

        if (@$_GET['var'] or @$this->error)

... или что-то подобное?

Вам нужно каким-то образом (?) Настроить php в ini-файле, чтобы подавить ошибки несуществующих переменных и свойств, чтобы использовать "функцию", или это просто плохая практика, которую следует избегать?

Ответы [ 4 ]

6 голосов
/ 19 сентября 2011

или это просто плохая практика, которую следует избегать?

Определенно да .Это плохая практика - подавлять или игнорировать ошибки.

0 голосов
/ 19 сентября 2011

каков "правильный" синтаксис условий для переменных и свойств, которые могут существовать или не существовать

К сожалению, нет.

Каждая переменная, используемая в коде, должна быть определена первой. Это единственная хорошая практика, если она вам нужна.

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

Для внешних переменных это менее очевидно.
Там нет единого сценария. Скажем, если поток программы зависит от существования переменной GET, то можно проверить, установлена ​​ли она *

if (isset($GET['page'])) ...

обратите внимание, что мы не используем содержимое этой переменной, а только проверяем ее существование!

в противном случае, если мы ожидаем, что page будет установлен всегда, мы должны сначала проверить его, а установить значение по умолчанию , если нет. и затем используйте эту новую переменную вместо $ _GET.

0 голосов
/ 19 сентября 2011

Они будут использовать его, потому что это быстрее печатать.И они могут не думать обо всех проблемах, которые это может вызвать.

0 голосов
/ 19 сентября 2011

Это совсем не похоже на баст-практикум.Как вы сказали правильно, без установки error_reporting, PHP выдаст много предупреждений в определенных случаях (где переменные не были установлены).

Использование isset кажется мне лучшим способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...