Type
is
String -> a -> Boolean
Added in: v1.0
See if value is of given type.
Internally this function uses \gettype() with few support of few aliases:
* bool - alias for boolean type
* float - alias for double type
* callable - checks if $value is valid callback
* function - same as callable
* class FQN - will check if supplied object is instance of given class
P::is('bool', true); // true
P::is(\stdClass::class, new \stdClass); // true
P::is(float, 1.1); // true
typeCond
[[String, (*... -> *)]] -> (*... -> *)
Added in: v1.0
Returns a function, fn, which encapsulates if/else, if/else, .
.. logic. P::typeCond takes a list of [type, transformer] pairs. Type is converted to predicate matching type of variable (in terms of P::is()). All of the arguments to fn are applied to each of the predicates in turn until one returns a truth-y value, at which point fn returns the result of applying its arguments to the corresponding transformer. If none of the predicates matches, fn returns null.
$count = P::typeCond([
['string', '\\mb_strlen'],
['array', '\\count'],
[P::T(), P::always(0)],
]);
$count('foo'); // 3
$count(['f', 'o', 'o']); // 3
$count(new stdClass); // 0