2012-11-23 4 views
0

Быстрый вопрос. Я видел в учебники, которые просто, если заявление написано так:PHP - если isset стенография

if($vest) echo $vest->naslov 

Но когда я пишу это так, я получаю сообщение об ошибке Undefined переменной: жилет и я должен написать код старому моды:

if(isset($vest)) echo $vest->naslov 

существуют ли какие-либо настройки в php.ini файл, который регулирует это? На данный момент я использую LAMP на Ubuntu (последняя версия).

ответ

2

Вы можете опустить error_reporting на E_ALL^E_NOTICE, но на самом деле это плохая практика, которая может привести к большому количеству трудностей для отслеживания ошибок. если $vest - опечатка, вы не будете знать, и ваши условия никогда не будут работать.

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

1

Undefined variable: vest ошибка означает, что переменная $vest не распознается. Причина, по которой isset($vest) не вызывает ошибку, заключается в том, что isset() проверяет, установлен ли $vest, или нет. Поэтому if (isset ($ vest)) выполнит логическую проверку на возвращаемое значение isset($vest).

Если вы просто использовать if($vest), PHP Предположит $vest уже установлен (когда на самом деле, $vest еще не определен), и это сделать булеву операцию проверки.

4

У вас есть E_STRICT, который жалуется, если у вас нет переменных, объявленных перед их проверкой. Вы могли это исправить, отключив E_STRICT в php.ini, но, лучше бы просто объявить переменные раньше времени - просто сделать это, в верхней части вашей функции:

$vest = null; 

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

1

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

При вводе этого: if($vest), вы на самом деле означает $vest==null или $vest=='' или $vest==='' или isempty($vest) или $vest===true или Исеть ($ жилета) `?

Существует множество применений для операторов if; вы должны четко указать в своем коде, что именно вы делаете. Действительно ли так сложно инициализировать переменную в верхней части вашего скрипта?

1

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

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

+0

, объявляющий их недействительными приведения к ложным в целях 'if'. также, большинство других целей. –

+0

Обычно я делаю 'null' сам, но не зная контекста (т. Е. Более позднего использования переменной), он использует его в .. оставил его открытым для них. –

1

if($foo) и if(isset($foo)) не то же самое и не должны использоваться взаимозаменяемо.

if($foo) проверяет, нет или нет $foo оценивает как истинный. Другой способ записи: if((bool) $foo === true). Поэтому, если $foo не определено, ожидается уведомление от PHP.

Вместо того, чтобы отключать уведомления, как и некоторые люди, напишите свой код правильным способом. Чтобы определить, определено ли значение $foo, всегда используйте isset().

Смежные вопросы