нам интересно, что это лучший способ вернуться empty
null
no result
в php мы часто используем это
function doThis($a){
if($a == 0){
return '';
}else{
// complex mysql
return $result;
}
еще один способ сделать это
function doThis($a){
if($a == 0){
return null;
}else{
// complex mysql
return $result;
}
теперь мы сравниваем вот так
if(doThis(5)){
// do something
}
или же
if(!is_null(doThis(5)){
// do something
}
мне было интересно, каков наилучший подход для этого?
В вашей функции есть проблема doThis
возле if($a = 0){
,
==
используется для сравнения.
=
используется для присвоения значения.
Null
означает «ничего». VAR не был инициализирован.
Ложный означает «не верно в логическом контексте». Используется, чтобы явно показать, что вы имеете дело с логическими проблемами.
0 является целым Ничего общего с остальным выше, используется для математики.
if($a = 0)
это назначит значение не сравнивать
тебе нужно попробовать if($a == 0)
Говорить о «лучшем способе» без контекста не имеет смысла. Как правило, вы должны написать код для достижения этих целей:
Есть общие случаи, когда пустое значение следует выбирать для данного непустого значения.
Например, если вы ищете конкретную сущность в базе данных. В случае успеха ваш код возвращает объект, так что, очевидно, не должно быть пустой строки в случае неудачного поиска. Обычная практика — возвращать ноль или NullObject в таком случае.
Если ваш код возвращает несколько объектов в случае успеха, вы можете вернуть пустой массив / итератор в случае сбоя.
Если ваш код работает со строками, вы обычно не хотите возвращать нуль в какой-то момент.
Самый очевидный случай: если вы возвращаетесь true
в случае успеха, вы не должны возвращать пустую строку в случае сбоя.
Так, использовать правила здравого смысла и немного логики, чтобы выяснить правильное возвращаемое значение.
Также зависит от контекста: есть ли разница в вашем случае, если функция возвращает null
, ''
или же false
, вы должны использовать дополнительные проверки возвращаемого значения (не забывайте использовать доброе имя для метода проверки). Если вашему коду не важно, что внутри, если это не объект, то if($something)
будет достаточно.
Эти правила обычно действительны для любого языка программирования, а не только для PHP.