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);

preferences:
34.4 ms | 402 KiB | 5 Q