我的小技巧就是多打印,多调试,多理解,看一遍不懂,再看一遍,一直看到懂了,然后自己能根据理解完整的敲一遍过程之后,然后趁热打铁,将自己理解下来的流程图画下来,我画的图如下:
有一点可能会被误导,我想提一下,就是在前面 有一步 \di\Container::getInstance()->set("car","\di\Car") ,这一步其实在 \di\Container::getInstance()->get() 方法里面没有用到, 可能在获取构造函数的参数Car类的时候会被误解,其实获取到Car类是在Person类的构造函数里面的参数里面获取到的,由反射类获取到Person类的参数,然后获取到是类的参数,递归调用(主要用来判断参数里边的类是否也有依赖关系),最后 通过 反射类的 newInstanceArgs($args)方法实例化Person,此时Person类已经实例化,并且被注入一系列依赖关系的Car类,其中$args为Person构造函数依赖类数组集.、