3v4l.org

run code in 300+ PHP versions simultaneously
<?php class Controller { public function __construct(B $b) { $this->b = $b; } } class B { public function __construct(C $c) { $this->c = $c; } } class C { public function __construct(Guzzle $guzzle) { $this->guzzle = $guzzle; } } class Guzzle { } $getReflectedConstructorParams = function($className) { return (new \ReflectionClass($className))->getConstructor()->getParameters(); }; $className = 'Controller'; $graph = [$className]; // I hate recursion, there's much better ways while (!empty($getReflectedConstructorParams($className))) { $className = $getReflectedConstructorParams($className); $graph[] = $className; } var_dump($className);

preferences:
55.36 ms | 402 KiB | 5 Q