3v4l.org

run code in 200+ PHP versions simultaneously
<?php // An example callback function function my_callback_function() { echo 'hello world!', PHP_EOL; } // Callback methods in classes class ParentClass { static function myCallbackMethod() { echo 'Hello Parent!', PHP_EOL; } } class MyClass extends ParentClass { static function myCallbackMethod() { echo 'Hello Child!', PHP_EOL; } } class Invokable { public function __invoke() { echo 'Hello Invokable', PHP_EOL; } } $obj = new MyClass(); $invokable = new Invokable(); $callbacks = array( 'type1' => 'my_callback_function', 'type2' => array('MyClass', 'myCallbackMethod'), 'type3' => array($obj, 'myCallbackMethod'), 'type6' => $invokable, 'type7' => function() { echo 'Hello Closure', PHP_EOL; }, 'type4' => 'MyClass::myCallbackMethod', 'type5' => array('MyClass', 'parent::myCallbackMethod'), ); foreach( $callbacks as $key => $callback ) { echo PHP_EOL, 'Testing ', $key, PHP_EOL; call_user_func($callback); try { $callback(); } catch( Error $e ) { echo $e->getMessage(), PHP_EOL; } }
based on 2TVkQ
Output for 7.0.0 - 7.4.6
Testing type1 hello world! hello world! Testing type2 Hello Child! Hello Child! Testing type3 Hello Child! Hello Child! Testing type6 Hello Invokable Hello Invokable Testing type7 Hello Closure Hello Closure Testing type4 Hello Child! Hello Child! Testing type5 Hello Parent! Call to undefined method MyClass::parent::myCallbackMethod()
Output for 5.4.0 - 5.6.40
Testing type1 hello world! hello world! Testing type2 Hello Child! Hello Child! Testing type3 Hello Child! Hello Child! Testing type6 Hello Invokable Hello Invokable Testing type7 Hello Closure Hello Closure Testing type4 Hello Child! Fatal error: Call to undefined function MyClass::myCallbackMethod() in /in/VfmVa on line 44
Process exited with code 255.
Output for 5.3.0 - 5.3.29
Testing type1 hello world! hello world! Testing type2 Hello Child! Fatal error: Function name must be a string in /in/VfmVa on line 44
Process exited with code 255.
Output for 5.1.0 - 5.2.17
Parse error: syntax error, unexpected T_FUNCTION in /in/VfmVa on line 35
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_FUNCTION in /in/VfmVa on line 35
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/VfmVa on line 10
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/VfmVa on line 10
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/VfmVa on line 10
Process exited with code 255.