In the "public static function type($input)" function, at the section that is commented "// avoid detecting strings with names of global functions as callbacks", the function doesn't see to filter out the strings correctly.
For example, if I have
$obj->name = 'System';
and I do a print_r($obj) I get
[name] => System
but if I use dump_r($obj) I get
The above is incorrect as I want the text 'System' to be displayed, not "fn()".
If I change the condition to
if (is_callable($input) && !(is_string($input)) && function_exists($input))
then the word 'System' will appear which is correct but I'm not sure if it'll kill the real system() fn() usage.