出现部分重复文字和符号遗漏

修改理由:
相关信息:
- 类型:文档文章
- 文章: 依赖注入,控制反转,反射各个概念的理解和使用
- 文档: 《深入 Laravel 核心(5.5)》
此投稿已在 6年前 合并。
内容修改:
Old | New | Differences |
---|---|---|
75 | 75 | $user->login(); |
76 | 76 | ``` |
77 | 77 | |
78 | 这样想用任何方式记录操作日志都不需要去修改过User类了,只需要通过构造函数参数传递就可以实现,其实这就是“控制 | |
79 | 转”。不需要自己内容修改,改成由外部外部传递。这种由外部负责其依赖需求的行为,我们可以称其为 “控制反转(IoC)”。 | |
78 | 这样想用任何方式记录操作日志都不需要去修改User类了,只需要通过构造函数参数传递就可以实现,其实这就是“控制反转”。不需要自己内容修改,改成由外部传递。这种由外部负责其依赖需求的行为,我们可以称其为 “控制反转(IoC)”。 | |
80 | 79 | |
81 | 80 | 那什么是依赖注入呢?,其实上面的例子也算是依赖注入,不是由自己内部new对象或者实例,通过构造函数,或者方法传入的都属于 依赖注入(DI) 。 |
82 | 81 | … | … |
133 | 132 | 这时候我们可以创建一个make方法,传入User,利用反射机制拿到User的构造函数,进而得到构造函数的参数对象。用递归的方式创建参数依赖。最后调用newInstanceArgs方法生成User实例。 可能有些同学还不是很理解。下面我们用代码去简单模拟下 |
134 | 133 | |
135 | 134 | ```php |
136 | function make( | |
135 | function make($concrete){ | |
137 | 136 | // 或者User的反射类 |
138 | 137 | $reflector = new ReflectionClass($concrete); |
139 | 138 | // User构造函数 |