3v4l.org

run code in 300+ 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; } }
Output for 8.2.0 - 8.2.18, 8.3.0 - 8.3.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 Deprecated: Callables of the form ["MyClass", "parent::myCallbackMethod"] are deprecated in /in/VfmVa on line 42 Hello Parent! Call to undefined method MyClass::parent::myCallbackMethod()
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28
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.4.45, 5.5.0 - 5.5.38, 5.6.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.1.6, 5.2.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.3.11, 4.4.0 - 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.

preferences:
298.51 ms | 401 KiB | 450 Q