phutil_nonempty_scalar(): don't throw when receiving a boolean scalar
Summary:
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
Test Plan:
- check if it makes sense to you
- check the few usages
Reviewers: O1 Blessed Committers, avivey
Reviewed By: O1 Blessed Committers, avivey
Subscribers: speck, tobiaswiese, Matthew, Cigaryno
Maniphest Tasks: T15239
Differential Revision: https://we.phorge.it/D25117