HomePhorge

phutil_nonempty_scalar(): don't throw when receiving a boolean scalar

Description

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
nulltrue
0true
0.5true
truetrue
falsetrue
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:

$vis_scalar($v)!is_empty($v)if(strlen($v))
truetruetruetrue
falsetruefalsefalse

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:

Valuephutil_nonempty_scalar($v)
"foo"true
""false
nullfalse
0true
0.5true
obj with tostringtrue
obj withno tostr.Exception
array()Exception
trueException true
falseException 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