Вчера я опубликовал ответ на вопрос, который включал несколько (неизвестных мне в то время) очень плохих примеров кода.С тех пор я изучал свои фундаментальные знания PHP, что позволило мне думать, что такой код возможен.Это подводит меня к вопросу, на который я не могу найти ответ:
Если я хочу проверить, есть ли для переменной что-либо установленное, допустимо ли это для не использовать isset()
или другую вспомогательную функцию?Вот «например»:
if($not_set){
//do something
} else {
//do something else
}
Вместо ...
if(isset($not_set)){
//do something
} else {
//do something else
}
Из имени переменной видно, что эта переменная не установлена.Следовательно, условие будет ложным, и будет запущена часть else
.До сих пор я использовал эту практику, но после вчерашних постов у меня появилось предположение, что это неправильно.
Вот почему я подумал, что было бы неплохо отказаться от функции isset()
, описанной выше.Из руководства по PHP:
Конструкция if является одной из наиболее важных функций многих языков, включая PHP.Это позволяет условно выполнять фрагменты кода.PHP имеет структуру if, которая аналогична структуре C:
оператор if (expr)
Как описано в разделе о выражениях, выражение оценивается как его логическое значение.Если выражение оценивается как TRUE, PHP выполнит оператор, а если оно оценивается как FALSE - он проигнорирует его.Дополнительную информацию о том, какие значения оценивают в FALSE, можно найти в разделе «Преобразование в логическое значение».
и в разделе «Преобразование в логическое значение»:
При преобразованиидля логического значения следующие значения считаются ложными:
... * специальный тип NULL (включая неустановленные переменные)
Почему руководство изо всех сил заявляет, чтовключены неустановленные переменные, если это плохая практика?Если он не задан, он преобразуется в NULL и, следовательно, корректно оценивается условным выражением.Использование isset()
даст тот же результат, но потребует дополнительных циклов для этого.
Может кто-нибудь просветить меня, не ошибся ли я все это время и почему?(И насколько это плохо, может быть?)
Спасибо, ТАК, вы никогда не разочаровываете.
Редактировать: Спасибо всем (и это было быстро).Честно говоря, я думаю, что все ответы до сих пор великолепны, и я не знаю, какой из них выбрать для ответа ... Если ваш ответ не выбран, я все равно буду голосовать: o)