千家信息网

PHP中的依赖注入怎么用

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章将为大家详细讲解有关PHP中的依赖注入怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、什么是依赖注入 (DI)依赖注入 (DI)其实本质上是指对类的
千家信息网最后更新 2025年01月24日PHP中的依赖注入怎么用

这篇文章将为大家详细讲解有关PHP中的依赖注入怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一、什么是依赖注入 (DI)

  • 依赖注入 (DI)其实本质上是指对类的依赖通过构造器完成自动注入

  • 通俗来说,就是你当前操作一个类,但是这个类的某些方法或者功能不是单单只靠这个类就能完成的,而是要借助另一个类的才能完成的

  • 最直接的标志就是传参数据为对象的时候。严格来说,你想在另一个类中操作另一个类,这两个类之间形成了相互依赖关系,传参的方式叫注入

二、依赖注入出现的原因

  • 在刚开始的时候,php需要在一个类中使用另一个类的时候,都会如下操作

  • 比如我在container类中需要用到adapter类,就需要在使用之前进行实例化

  • 如果需要用到大量的外部类,这就会造成了耦合度太高,很容易造成后期的维护困难

  • 通俗的来讲,也就是container脱离不了外部类去工作,这就叫耦合度太高

adapter = new adapter();    }}

三、简单的依赖注入

  • 上面的代码耦合度太高,导致了依赖注入的出现,主要是为了解耦合

  • 如下图,我们只需要将所需要操作的类对象传入即可

  • 依赖注入操作的参数是对象,而不是普通参数,是不是有更好的理解了

  • 但是这样的简单依赖注入,会造成如果你依赖的类很多,你传参的时候会很长,容易混乱

adapter = $adapter;    }}

四、高阶的依赖注入

  • 为了解决上面参数混乱的问题,这时候,依赖注入进行了进化

  • 通过魔术方法,__get去设置对象

  • 这时候,我们就可以解决依赖太多,参数混乱的问题了

instance[$name] = $value;    }}$container = new container();$container->adapter = new adapter();

五、依赖注入的应用

  • 我们先定义一个容器类,主要用来向容器中注入你想要操作的类

  • 使用的时候,只需要传容器这一个对象即可

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); //我是调度器

六、高阶优化

  • 在上面的应用中,我们直接将实例化后的对象注入容器中

  • 这样会导致,所有的对象还没有被使用就会被实例化一遍,造成资源的损耗

  • 我们可以传入闭包,这样对象就不会被实例化而注入,当你自己需要使用的时候,再去实例化

  • 就可以减少服务器资源的损耗了

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

关于"PHP中的依赖注入怎么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

对象 时候 参数 实例 容器 混乱 篇文章 耦合度 高阶 耦合 通俗 就是 方法 更多 资源 问题 面的 应用 损耗 调度 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 黄浦区常规网络技术服务参考价格 数据库学生表命令 2019齐市网络安全宣传周启动 支付宝中国网络技术备付金 广西广电网络软件开发 计算机网络安全可以考二建吗 电信网络安全的意义 上海品牌软件开发定制平均价格 山东新华互联网科技学校 中山手机软件开发大概多少钱 河北现代化软件开发包括哪些 西工大网络安全考研真题 常州交联互联网科技有限公司 北京通用软件开发厂家价格 放心的贸易软件开发定制 软件开发ppt模板下载 稳健安全的优质软件开发 arcgis地籍数据库建立流程 20万可以组建啥服务器 网络安全中人为因素影响包括 购物网站数据库课程设计 云南软件开发工程师培训哪家好 更新数据库的最后的一行 教育游戏人才软件开发 验证密码后服务器怎么老转啊 him的服务器游戏时间 重庆双桥区苹果软件开发机构 网络安全主题书法比赛绍兴 电脑邮箱服务器设置教程 浙江万卡汇软件开发有限公司
0