2013-03-23 2 views
0

У меня есть такой кусок кода:Как проверить три значения состояния (null, false, true)?

public function setValue($flag) { 
    $this->value = isset($flag) ? (bool) $flag : null; 
} 

Я полагаю, что $ флаг может обозначать либо нулю, либо ложным, или истинным. (Причина я типажей в том, что я просто забочусь о типах.)

EDIT: Это моя цель:

  • если $ флаг имеет нулевое значение, то $ this-> значение равно нулю,
  • if (bool) $ flag false, тогда значение $ this-> is false,
  • if (bool) $ flag is true, тогда значение $ this-> is true.

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

+0

Почему '' флаги не установлены? – Tchoupi

+2

Имеет смысл проверить, установлен ли флаг $ до того, как он используется как параметр в функции, а не после этого. – Jonast92

ответ

1

Edit

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

$this->value = null; 
if(isset($flag)) { 
    setValue($flag); 
} 

public function setValue($flag) { 
    $this->value = (bool) $flag 
} 
+1

Вы должны немного подправить свой ответ. – joce

+0

@ jacek.ciach Я обновил свой ответ –

+0

@Evan, я согласен с вами. Но вы должны заметить, что ваш код делает то же самое, что и мой код, но мой короче;) Typecasting $ flag to bool равен пустым ($ flag), не так ли? –

0

isset вернет false, если значение NULL. Вы должны также проверить, is_null

+0

Я знаю, что так будет. И тогда значение $ this-> равно null. Поэтому он работает так, как я хочу. –

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