PHP反射中使用递归的问题

小伟男
  • 38
public function get($class)
    {
        if (isset($this->objectTree[$class])) {
            $class = $this->objectTree[$class];
        }
        $reflect = new \ReflectionClass($class);
        dump($reflect);
        $construct = $reflect->getConstructor();
        if (!$construct) {
            return new $class;
        }
        $params = $construct->getParameters();
        if (!$params) {
            return new $class;
        }
        foreach($params as $param) {
            $class = $param->getClass();
            if ($class) {
                $args[] = $this->get($class->name);
            }
        }
        dump($reflect);
        return $reflect->newInstanceArgs($args);
    }

image.png
我现在没明白,类方法第一次执行时,$reflect是Person类的反射对象,当执行到foreach循环时,又递归调用了一次这个get方法,此时$reflect是Car类的反射对象,为什么当foreach中递归执行完成之后,$reflect又变成了Person类的反射对象,而没有被递归调用时所覆盖?
希望有人能帮忙解答一下,感谢!

评论
阅读 58
撰写回答

登录后参与交流、获取后续更新提醒

宣传栏