Skip to content

Commit 0344dd5

Browse files
committed
Laravel框架(二)--服务容器和依赖注入
1 parent d53f8b9 commit 0344dd5

7 files changed

+75
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: Laravel-Contract基于接口的编程
3+
date: 2016-10-15 13:50:45
4+
categories:
5+
tags:
6+
---
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: Laravel-Pipeline实现原理详解
3+
date: 2016-10-15 13:48:48
4+
categories:
5+
tags:
6+
---
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
title: Laravel框架(二)--服务容器和依赖注入
3+
date: 2016-10-11 13:53:45
4+
categories: Laravel
5+
tags: [Laravel]
6+
---
7+
8+
* 本文的思想借鉴了下面这篇文章: [Laravel的核心概念](https://lufficc.com/blog/the-core-conception-of-laravel)
9+
10+
# 简介
11+
12+
Laravel框架的整体设计是基于服务容器的。服务容器提供了Laravel框架中的类依赖关系的整理和依赖注入的实现。可以说服务容器的实现是整个框架的基础。
13+
14+
Laravel框架的所有模块都是在服务容器的基础上进行代码的开发的。服务容器的通俗说法就是实现了一个保存框架中所有类的实例的容器,在框架的任何地方需要某一个类的实例,都可以通过服务容器来获取,不必在自己去实例化类。
15+
16+
17+
# 依赖注入和控制反转
18+
19+
依赖注入的概念其实很好理解,通俗的讲就是在类实例化的过程中,将类所需要的依赖参数全部传入给类的构造函数。类似的过程其实就是我们编程的时候实例化类的过程。
20+
21+
但是控制反转的概念是说在类实例化的过程中,本来需要将类所依赖的参数有人为传入改为程序自动传入,即是将传入参数的控制权反转给服务容器来执行,故其名曰`控制反转`
22+
23+
# 控制反转的实现原理
24+
25+
Laravel框架中`控制反转` 的过程是由其服务容器来实现的。在框架的初始化过程中,所有必要的类的实例都是由服务容器生成。在生成类的实例的过程中,为了知道类的依赖条件,使用了
26+
27+
PHP语言的重要特性:[反射](http://php.net/manual/zh/book.reflection.php)
28+
29+
简单来说,Laravel框架中控制反转的实现分为三个步骤:
30+
31+
1. 通过读取服务容器的配置来获取需要实例化的具体类
32+
33+
2. 通过反射获取类的依赖条件(类构造函数参数的实例)
34+
35+
3. 将类的所有依赖条件注入到类的构造函数中,获取类的实例
36+
37+
# 总结
38+
39+
服务容器和控制反转是Laravel框架的核心概念,也是它的基础。具体的实现代码本文没有提供,我们可以通过阅读Laravel框架的源码来查看底层实现原理。
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: Nginx-tryfiles配置项详解
3+
date: 2016-10-15 13:49:21
4+
categories:
5+
tags:
6+
---
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: 学习计划-数据结构和算法-设计模式
3+
date: 2016-10-15 13:51:28
4+
categories:
5+
tags:
6+
---
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: 正则表达式中断言和条件子组详解
3+
date: 2016-10-15 13:50:00
4+
categories:
5+
tags:
6+
---

source/_posts/浅谈软件架构.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: 浅谈软件架构
3+
date: 2016-10-21 10:23:15
4+
categories:
5+
tags:
6+
---

0 commit comments

Comments
 (0)