Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php的依赖注入详解

php的依赖注入详解

韦小宝
韦小宝asal
2018-03-14 12:44:112696semak imbas

本篇文章讲述了PHP的依赖注入,对于php依赖注入不太了解的同学但是有点感兴趣的那么就更要看看本篇文章咯,废话不多说了,我们直接来看看php的依赖注入吧!

依赖注入

理解:

  1. 是一种允许我们从硬编码的依赖中解耦出来,从而在运行时或者编译时能够修改的软件设计模式

  2. 简单来说依赖注入是通过构造注入,函数调用或者属性的设置等来提供组件的依赖关系。

控制反转

理解:

  • 一个系统通过组织控制和对象的完全分离来实现”控制反转”。对于依赖注入,这就意味着通过在系统的其他地方控制或实例化依赖对象,从而实现了解耦。

  • 例如MVC 框架通常会提供超类或者基本的控制器类以便其他控制器可以通过继承来获得相应的依赖

注意

  • 因为对基类的继承是可以选择的,所以这种方式是可以完全解除依赖,不属于依赖注入

依赖反转

理解:

  • 依赖反转准则是面向对象设计准则 S.O.L.I.D 中的 “D” ,倡导 “依赖于抽象而不是具体”。简单来说就是依赖应该是接口/约定或者抽象类,而不是具体的实现。

例子:

<?php
namespace Database;

class Database
{
    protected $adapter;

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

interface AdapterInterface {}

class MysqlAdapter implements AdapterInterface {}

好处:

  • 假设你工作的团队中,一位同事负责设计适配器。在第一个例子中,我们需要等待适配器设计完之后才能单元测试。现在由于依赖是一个接口/约定,我们能轻松地模拟接口测试,因为我们知道同事会基于约定实现那个适配器

  • 代码扩展性变得更高。如果一年之后我们决定要迁移到一种不同的数据库,我们只需要写一个实现相应接口的适配器并且注入进去,由于适配器遵循接口的约定,我们不需要额外的重构。

相关推荐:



PHP类的反射实现依赖注入过程详解

PHP基于反射机制实现自动依赖注入的方法详解

Atas ialah kandungan terperinci php的依赖注入详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:细说get与post之间的区别Artikel seterusnya:5个PHP实用函数分享