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; var_dump(is_callable()); call_user_func($callback); try { $callback(); } catch( Error $e ) { echo $e->getMessage(), PHP_EOL; } }
based on VfmVa

Shows result from various feature-branches currently under review from the php developers. Contact me to have additional branches featured.

Output for branch php-master
Testing type1 Fatal error: Uncaught ArgumentCountError: is_callable() expects at least 1 parameter, 0 given in /in/CrEev:42 Stack trace: #0 /in/CrEev(42): is_callable() #1 {main} thrown in /in/CrEev on line 42
Process exited with code 255.
Output for branch php-master+jit
Testing type1 Fatal error: Uncaught ArgumentCountError: is_callable() expects at least 1 parameter, 0 given in /in/CrEev:42 Stack trace: #0 /in/CrEev(42): is_callable() #1 {main} thrown in /in/CrEev on line 42
Process exited with code 255.
Output for branch php-master+opcache
Testing type1 Fatal error: Uncaught ArgumentCountError: is_callable() expects at least 1 parameter, 0 given in /in/CrEev:42 Stack trace: #0 /in/CrEev(42): is_callable() #1 {main} thrown in /in/CrEev on line 42
Process exited with code 255.

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page