3v4l.org

run code in 300+ PHP versions simultaneously
<?php interface WorldInterface { function doAThing($foo); } class World implements WorldInterface { public function __construct(string $name) { $this->name = $name; } public function doAThing($foo) { echo $foo; } } class BackwardsWorld implements WorldInterface { public function __construct(string $name) { $this->name = strrev($name); } public function doAThing($foo) { echo strrev($foo); } } class Hello { /** * @var World */ private $world; public function setWorld( WorldInterface $world ) { $this->world = $world; } } class WorldFactory { // full disclosure: I'm still bad at factories public static function makeWorld($name) { return new World($name); } public static function makeDlrow($name) { return new BackwardsWorld($name); } } $hey = new Hello(); $hey->setWorld(WorldFactory::makeWorld('blorp')); $yeh = new Hello(); $yeh->setWorld(WorldFactory::makeDlrow('blorp')); var_dump($hey, $yeh);
Output for 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
Deprecated: Creation of dynamic property World::$name is deprecated in /in/cK3Wo on line 9 Deprecated: Creation of dynamic property BackwardsWorld::$name is deprecated in /in/cK3Wo on line 19 object(Hello)#1 (1) { ["world":"Hello":private]=> object(World)#2 (1) { ["name"]=> string(5) "blorp" } } object(Hello)#3 (1) { ["world":"Hello":private]=> object(BackwardsWorld)#4 (1) { ["name"]=> string(5) "prolb" } }
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 Deprecated: Creation of dynamic property World::$name is deprecated in /in/cK3Wo on line 9 Deprecated: Creation of dynamic property BackwardsWorld::$name is deprecated in /in/cK3Wo on line 19 object(Hello)#1 (1) { ["world":"Hello":private]=> object(World)#2 (1) { ["name"]=> string(5) "blorp" } } object(Hello)#3 (1) { ["world":"Hello":private]=> object(BackwardsWorld)#4 (1) { ["name"]=> string(5) "prolb" } }
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
object(Hello)#1 (1) { ["world":"Hello":private]=> object(World)#2 (1) { ["name"]=> string(5) "blorp" } } object(Hello)#3 (1) { ["world":"Hello":private]=> object(BackwardsWorld)#4 (1) { ["name"]=> string(5) "prolb" } }
Output for 5.6.0 - 5.6.40
Catchable fatal error: Argument 1 passed to World::__construct() must be an instance of string, string given, called in /in/cK3Wo on line 41 and defined in /in/cK3Wo on line 8
Process exited with code 255.

preferences:
201.46 ms | 401 KiB | 287 Q