首页 新闻 搜索 专区 学院

php反射中的递归问题

0
悬赏园豆:50 [待解决问题]
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);
    }


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

把悲伤当小丑的主页 把悲伤当小丑 | 初学一级 | 园豆:152
提问于:2021-02-22 22:00
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册