3v4l.org

run code in 300+ PHP versions simultaneously
<?php declare(strict_types=1); class Foo { public function out(string $msg) { print __CLASS__ . ': ' . $msg . PHP_EOL; } } class Msg { public function __toString() { return "world"; } } class Bar extends Foo { public function out($msg) { print __CLASS__ . ': ' . $msg . PHP_EOL; } } $f = new Foo(); try { $f->out('hello'); } catch (TypeError $e) { print $e->getMessage() . PHP_EOL; } try { $f->out(new Msg()); } catch (TypeError $e) { print $e->getMessage() . PHP_EOL; } $b = new Bar(); try { $b->out('hello'); } catch (TypeError $e) { print $e->getMessage() . PHP_EOL; } try { $b->out(new Msg()); } catch (TypeError $e) { print $e->getMessage() . PHP_EOL; }
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.12
Foo: hello Foo::out(): Argument #1 ($msg) must be of type string, Msg given, called in /in/0dpsJ on line 34 Bar: hello Bar: world
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
Foo: hello Argument 1 passed to Foo::out() must be of the type string, object given, called in /in/0dpsJ on line 34 Bar: hello Bar: world
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33
Warning: Declaration of Bar::out($msg) should be compatible with Foo::out(string $msg) in /in/0dpsJ on line 22 Foo: hello Argument 1 passed to Foo::out() must be of the type string, object given, called in /in/0dpsJ on line 34 Bar: hello Bar: world
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40
Warning: Unsupported declare 'strict_types' in /in/0dpsJ on line 3 Strict Standards: Declaration of Bar::out() should be compatible with Foo::out(string $msg) in /in/0dpsJ on line 22 Catchable fatal error: Argument 1 passed to Foo::out() must be an instance of string, string given, called in /in/0dpsJ on line 27 and defined in /in/0dpsJ on line 7
Process exited with code 255.
Output for 5.3.0 - 5.3.29
Warning: Unsupported declare 'strict_types' in /in/0dpsJ on line 3 Strict Standards: Declaration of Bar::out() should be compatible with that of Foo::out() in /in/0dpsJ on line 22 Catchable fatal error: Argument 1 passed to Foo::out() must be an instance of string, string given, called in /in/0dpsJ on line 27 and defined in /in/0dpsJ on line 7
Process exited with code 255.
Output for 5.2.0 - 5.2.17
Strict Standards: Declaration of Bar::out() should be compatible with that of Foo::out() in /in/0dpsJ on line 22 Catchable fatal error: Argument 1 passed to Foo::out() must be an instance of string, string given, called in /in/0dpsJ on line 27 and defined in /in/0dpsJ on line 7
Process exited with code 255.
Output for 5.1.0 - 5.1.6
Strict Standards: Declaration of Bar::out() should be compatible with that of Foo::out() in /in/0dpsJ on line 22 Fatal error: Argument 1 passed to Foo::out() must be an object of class string, called in /in/0dpsJ on line 27 and defined in /in/0dpsJ on line 7
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Strict Standards: Declaration of Bar::out() should be compatible with that of Foo::out() in /in/0dpsJ on line 22 Fatal error: Argument 1 must be an object of class string in /in/0dpsJ on line 7
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/0dpsJ on line 7
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_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /in/0dpsJ on line 7
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/0dpsJ on line 7
Process exited with code 255.

preferences:
157.63 ms | 421 KiB | 5 Q