hphp/hack/manual/hack/03-expressions-and-operators/72-logical-operators.md
Hack provides the conventional boolean operations.
&&The operator && calculates the boolean AND operation of its two operands.
if (youre_happy() && you_know_it()) {
clap_your_hands();
}
If either operand does not have a boolean type, it is converted to a boolean first. The result is always a boolean.
&& is short circuiting, so it stops evaluation on the first false
result.
$x = one() && two() && three();
The function three will not be called if one() or two() evaluate to false.
||The operator || calculates the boolean OR operation of its two operands.
if ($weekday === 6 || $weekday === 7) {
echo "It's a weekend";
}
If either operand does not have a boolean type, it is converted to a boolean first. The result is always a boolean.
|| is short circuiting, so it stops evaluation on the first true
result.
$x = one() || two() || three();
The function three will not be called if one() or two() evaluate to true.
!The operator ! calculate the boolean negation of its operand.
If the operand does not have a boolean type, it is converted to a boolean first. The result is always a boolean.
while (!is_connected()) {
connect();
}
If the operand has type num, !$v is equivalent to
$v === 0 || $v === 0.0.