Note that booleans are scalars. Full stop.
is_scalar($v) | Result |
---|---|
"foo" | true |
"" | true |
null | true |
0 | true |
0.5 | true |
true | true |
false | true |
new stdclass() | false |
array() | false |
Note that phutil_nonempty_scalar() was designed just to tell
whenever a scalar is "empty" or not. So it must not explode
when receiving a valid scalar.
So the question is not whenever a boolean is a scalar or not,
but whenever is empty or not. But also this is a clear fact:
$v | is_scalar($v) | !is_empty($v) | if(strlen($v)) |
---|---|---|---|
true | true | true | true |
false | true | false | false |
In short, now the function does not explode anymore with bool
values. Instead, it says whenever are empty or not.
In bold the exact changes:
Value | phutil_nonempty_scalar($v) |
---|---|
"foo" | true |
"" | false |
null | false |
0 | true |
0.5 | true |
obj with tostring | true |
obj withno tostr. | Exception |
array() | Exception |
true | |
false | |
Closes T15239