Соглашение об установке типа возврата в логических функциях php

Хорошо ли явно «вернуть FALSE» в логической функции или просто «вернуть TRUE»

Пример А:

  function check($link){
  if(isset($link)){
  return TRUE;
  }else{
  return FALSE;
  }

ИЛИ Пример Б:

  function check($link){
  if(isset($link)){
  return TRUE;
  }

По умолчанию функции php возвращают FALSE, так что хорошо, если я упомяну возврат FALSE или проигнорирую его как пример B

так что если я проверяю, правда это или ложь

 if(check('eqweqw')){
  echo 'its set';
 }else{
 echo 'its not';
 }

person meWantToLearn    schedule 11.10.2012    source источник
comment
By default php functions return FALSE это неправда. Если вы не вернете никакого значения, вы получите NULL   -  person Nemoden    schedule 11.10.2012
comment
stackoverflow.com/ вопросы/1218580/   -  person meWantToLearn    schedule 11.10.2012
comment
явное лучше, чем неявное, поэтому лично я предпочитаю первое.   -  person Nemoden    schedule 11.10.2012
comment
Думаю мнения разделятся на этот счет. Я подозреваю, что реальный ответ зависит от достоинств ситуации   -  person allen213    schedule 11.10.2012


Ответы (4)


Пример A является лучшей практикой, потому что он явно указывает цель вашего кода. Если кто-то, читающий ваш код, не знает, что FALSE возвращается по умолчанию, он, вероятно, решит, что ваш код содержит ошибки.

Помните: пишите код так, чтобы его могли легко прочитать и понять другие.

person Ian Kemp    schedule 11.10.2012

Из руководства:

Примечание. Если параметр не указан, круглые скобки должны быть опущены, и будет возвращено значение NULL.

Если вы хотите, чтобы ваша функция возвращала false, вы должны явно вернуть false. Поскольку null не равно false, конструкция B в некоторых случаях не работает:

if(check('eqweqw') === false){
 echo 'its not';
 }else{
  echo 'its set';
 }

Вернет its set в конструкции B

person JvdBerg    schedule 11.10.2012

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

Вот как бы я это сделал:

function check($link){

  $result = false;

  if(isset($link)){
     $result = true;
  }

  return $result;
}

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

person MrCode    schedule 11.10.2012

Вы можете уменьшить его до:

function check($link){
  return isset($link);
}

Но это звучит так, как будто это функционально эквивалентно isset, поэтому, возможно, вам следует просто использовать его вместо этого. Что касается вопроса о передовой практике, если PHP возвращает bool true/false на isset, вам может быть полезно сделать то же самое.

person Jimmy    schedule 06.11.2013