3v4l.org

run code in 300+ PHP versions simultaneously
<?php class foo { protected $bar = 'A bar'; public function getBarDumper() { return function() { var_dump($this->bar); }; } public static function getFactory() { // la fonction anonyme suivante est statique // car elle est déclarée dans une méthode statique. return function() { return new static(); }; } } $factory = foo::getFactory(); $reflectedFactory = new \reflectionFunction($factory); var_dump('Factory', $reflectedFactory->getClosureScopeClass()); $bar = $factory()->getBarDumper(); $reflectedBar = new \reflectionFunction($bar); var_dump('Dumper', $reflectedBar->getClosureScopeClass());

preferences:
39.8 ms | 402 KiB | 5 Q