PHP学习_深入了解PHP中的依赖注入,看看怎么应用

2021-09-09 0 863 百度已收录

甚么是依附注入?本篇文章带大师理解一下PHP中的依附注入,介绍一下依附注入呈现的缘由、依附注入的使用,但愿对于大师有所协助!

PHP学习_深入了解PHP中的依赖注入,看看怎么应用

1、甚么是依附注入 (DI)

  • 依附注入 (DI)实在实质上是指对于类的依附经过结构器实现主动注入
  • 浅显来讲,便是你以后操纵一个类,可是这个类的某些办法或许功用没有是单单只靠这个类就可以实现的,而是要借助另外一个类的才干实现的
  • 最间接的标记便是传参数据为工具的时分。严厉来讲,你想正在另外一个类中操纵另外一个类,这两个类之间构成了互相依附干系,传参的体式格局叫注入

2、依附注入呈现的缘由

  • 正在刚开端的时分,php需求正在一个类中运用另外一个类的时分,城市以下操纵
  • 比方我正在container类中需求用到adapter类,就需求正在运用以前停止实例化
  • 假如需求用到少量的内部类,这就会形成了耦合度过高,很简单形成前期的保护坚苦
  • 浅显的来说,也便是container离开没有了内部类去任务,这就叫耦合度过高
<?php
class container
{
    private $adapter;

    public function __construct()
    {
        $this->adapter = new adapter();
    }
}

3、复杂的依附注入

  • 下面的代码耦合度过高,招致了依附注入的呈现,次要是为理解耦合
  • 以下图,咱们只要要将所需求操纵的类工具传入便可
  • 依附注入操纵的参数是工具,而没有是平凡参数,是否是有更好的了解了
  • 可是如许的复杂依附注入,会形成假如你依附的类良多,你传参的时分会很长,简单凌乱
<?php
class container
{
    private $adapter;

    public function __construct(adapter $adapter)
    {
        $this->adapter = $adapter;
    }
}

4、高阶的依附注入

  • 为理解决下面参数凌乱的成绩,这时候候,依附注入停止了退化
  • 经过把戏办法,__get去配置工具
  • 这时候候,咱们就能够处理依附太多,参数凌乱的成绩了
<?php
class container
{
    public $instance = [];

    public function __set($name, $value)
    {
        $this->instance[$name] = $value;
    }
}

$container = new container();

$container->adapter = new adapter();

5、依附注入的使用

  • 咱们先界说一个容器类,次要用来向容器中注入你想要操纵的类
  • 运用的时分,只要要传容器这一个工具便可
<?php
class container
{
    public $instance = [];

    public function __set($name, $value)
    {
        $this->instance[$name] = $value;
    }
}

class adapter
{
    public $name = '我是调剂器';
}

$container = new container();
$container->adapter = new adapter();

class autofelix
{
    private $container;

    public function __construct(container $container)
    {
        $this->container = $container;
    }

    public function who($class)
    {
        return $this->container->instance[$class]->name;
    }
}

$autofelix = new autofelix($container);

$who = $autofelix->who('adapter');

var_dump($who); //我是调剂器

6、高阶优化

  • 正在下面的使用中,咱们间接将实例化后的工具注入容器中
  • 如许会招致,一切的工具尚未被运用就会被实例化一遍,形成资本的消耗
  • 咱们能够传入闭包,如许工具就没有会被实例化而注入,当你本人需求运用的时分,再去实例化
  • 就能够增加效劳器资本的消耗了
<?php
$container = new container();
$container->adapter = new adapter();

//高阶优化
$container = new container();
$container->adapter = function () {
    return new adapter();
};

原文地点:https://juejin.cn/post/7004616671864291359

推选进修:《PHP视频教程

以上便是深化理解PHP中的依附注入,看看怎样使用的具体内容,更多请存眷酷吧易资源网别的相关文章!

 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 PHP教程 PHP学习_深入了解PHP中的依赖注入,看看怎么应用 https://www.kubayi.com/7660.html

常见问题

相关文章

评论
暂无评论