3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php class a { static public function o() { return true;} } $cls = [ a::o(), 'a::o','strpos::test' , 'strlen', function(){}, null]; foreach($cls as $cl) { echo var_export($cl, true); echo "\t"; echo "is_callable\n"; var_dump(is_callable($cl)); echo "is_callable by syntax\n"; var_dump(is_callable($cl,true)); echo "instance of closure\n"; var_dump($cl instanceof Closure); }
Output for 5.4.0 - 5.6.28, 7.0.0 - 7.1.0
true is_callable bool(false) is_callable by syntax bool(false) instance of closure bool(false) 'a::o' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(false) 'strpos::test' is_callable bool(false) is_callable by syntax bool(true) instance of closure bool(false) 'strlen' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(false) Closure::__set_state(array( )) is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(true) NULL is_callable bool(false) is_callable by syntax bool(false) instance of closure bool(false)
Output for hhvm-3.12.0
true is_callable bool(false) is_callable by syntax bool(false) instance of closure bool(false) 'a::o' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(false) 'strpos::test' is_callable bool(false) is_callable by syntax bool(true) instance of closure bool(false) 'strlen' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(false) 'Closure$o;1703888659$3d6de57904c9efeeb3bade87a1789655$' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(true) NULL is_callable bool(false) is_callable by syntax bool(false) instance of closure bool(false)
Output for hhvm-3.10.0
true is_callable bool(false) is_callable by syntax bool(false) instance of closure bool(false) 'a::o' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(false) 'strpos::test' is_callable bool(false) is_callable by syntax bool(true) instance of closure bool(false) 'strlen' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(false) 'Closure$o;1703888659$6a810213f13a40583294403a71303ce8$' is_callable bool(true) is_callable by syntax bool(true) instance of closure bool(true) NULL is_callable bool(false) is_callable by syntax bool(false) instance of closure bool(false)
Output for 5.1.0 - 5.3.29
Parse error: syntax error, unexpected '[' in /in/1OB94 on line 10
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected '[' in /in/1OB94 on line 10
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/1OB94 on line 5
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_STATIC, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/1OB94 on line 5
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in /in/1OB94 on line 5
Process exited with code 255.