3v4l.org

run code in 300+ PHP versions simultaneously
<?php $__CLASSES = []; $__CLASSES["Foo"] = [ "vars" => ["bar" => null], "methods" => [ "__construct" => function(&$this_, $bar) { $this_["vars"]["bar"] = $bar; }, "bar" => function(&$this_) { return $this_["methods"]["foo"]($this_); }, "foo" => function(&$this_) { static $bar; if (!$bar) { $bar = $this_["vars"]["bar"]; } return $bar; } ] ]; function __new($class, ...$args) { global $__CLASSES; $object = $__CLASSES[$class]; if (isset($object["methods"]["__construct"])) { $object["methods"]["__construct"]($object, ...$args); } return $object; } var_dump(($__temp = __new("Foo", 123))["methods"]["bar"]($__temp)); var_dump(($__temp = __new("Foo", 456))["methods"]["bar"]($__temp));
Output for 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.28, 7.4.0 - 7.4.16, 8.0.0 - 8.0.3
int(123) int(123)