Laravel实例详解之容器、控制反转和依赖注入(转)

发布时间:2022-11-16 16:30:51编辑:文明阅读(1975)

    本篇文章给大家带来了关于Laravel的相关知识,其中主要介绍了关于容器、控制反转以及依赖注入的相关问题,下面就一起来看一下什么相关的内容,希望对大家有帮助。


    随着现在应用的规模越来越庞大,对象之间的依赖关系也越来越复杂,耦合程度越来越高,经常会出现对象之间多重依赖的情况。对于如此庞大复杂的应用,任何修改都可能会牵一发而动全身,这就为应用的后期维护造成了很多困扰。

      为了解决对象之间耦合度高的问题,控制反转(IoC)的思想也随之诞生。所谓控制反转,是面向对象编程中的一种设计原则,其目的是为了降低代码之间的耦合程度。在 Laravel 中,控制反转是通过依赖注入(DI)的方式实现的。

      控制反转的基本思想是借助 IoC 容器实现对象之间的依赖关系的解耦。引入 IoC 容器之后,所有对象的控制权都上交给 IoC 容器,IoC 容器成了整个系统的核心,把所有对象粘合在一起发挥作用。Laravel 中的容器即起到了这个作用。

    ⒈ 容器

      所谓容器,在 Laravel 中指的是 \Illuminate\Foundation\Application 对象,Laravel 框架在启动时即创建了该对象。

    1

    2

    3

    4

    5

    6

    # public/index.php

    $app = require_once __DIR__.'/../bootstrap/app.php';

    # bootstrap/app.php

    $app = new Illuminate\Foundation\Application(

        $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__)

    );

      在创建容器的过程中,Laravel 还会对容器进行一些基础的绑定和服务注册。Laravel 首先会将容器实例与 app 和 Illuminate\Container\Container 进行绑定;之后,Laravel 会将基础的服务提供者注册到容器实例中,包括事件、日志、路由服务提供者;最后,Laravel 会将框架核心 class 与其相对应的别名一起注册到容器实例当中。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    // namespace Illuminate\Foundation\Application

    public function __construct($basePath = null)

    {

        if ($basePath) {

            

    关键字laravelIOC依赖注入

      还没有小伙伴评论,快来抢沙发啦~~!