3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Foo { protected $bar; public function __construct(Bar $bar) { $this->bar = $bar; } public function __get($key) { $exploded = explode('.', $key); $item = $this; do { $next = array_shift($exploded); var_dump($item, $next); if (!property_exists($item, $next)) { return null; } $item = $item->{$next}; } while ($exploded); return $item; } } class Bar { public $foo = 'test'; } $foo = new Foo(new Bar); var_dump($foo->{"bar.foo"});

preferences:
41.4 ms | 402 KiB | 5 Q