欢迎来到DT模板堂 登录 注册
DT教程
当前位置:首页 > 教程 > 二开教程> DTapi教程:09.依赖注入与反射

DTapi教程:09.依赖注入与反射

发表:DESTOON模板堂(dtmoban.com) 发表时间:2019-10-11
 

简介

关于依赖注入与反射的知识大家可以百度,不过学习难度不小,DTapi是面向php新手小白的,所以这里也就不详究其原理了,大家只要知道怎么用就行了。

了解面向对像编程的php小伙伴肯定应该知道,要使用一个class就必须先用include或require将文件导入进来,然后再new对像。

稍微有点框架知识的小伙伴应该知道,include、require可以使用php的自动加载省略掉。

但是还有一个文件就是在A类中使用B类的方法,必须先要在加载A类之前new出B类,然后通过方法传参传进A类,或者global B对像,这样才能在A的方法中使用B的方法。

还有就是直接在A的方法new 出B,这样看起来还是有点烦锁,有了依赖注入和反射后就不用再new来new去了,直接将对像传给A中的方法即可。

老方式:

 

上面的方法我们是建立在自动加载的基础上,A中每个方法要使用B 都得new一遍,是不是麻烦。
当然我们可以在构造方法中全局new 好:

nstruct()     {         $this->B = new B();     }     function ceshi(){         $this->B->dao();     }          function test(){        $this->B->sao();     }      } ?> 

这样就不用每个方法里都去new了,但是如果A还有第三个方法user不需要用到B,而user控制器也不需要用到A中的其它方法,这时候如果采用上面的方法在user控制器中也会加载B 类,影响性能,虽然可以忽略不计,但是能有更好的办法避免那肯定是最好的。

那么有了依赖注入和反射后这问题就迎刃而解了。下面请看:

sao();     }          function test(B $do){         $do->dao();     }      function user(){        echo 'dtapi.com';     }      } ?> 

首先一看,代码都少了吧,用起来也更简单了吧。在使用user方法时也不会再加载B类进来了。

注意

依赖注入和反射的作用当然不是为了我上面说的情况而诞生的,而是大项目的中对像之间的松耦合,可复用,维护方便而生的。但是DTapi只是开发小插件,根本不涉及到这一块,而这一块也太深入,对于PHP小白来说也太难了。所以我们就当是为了减少写代码而服务的。

##一个方法中注入多个类

dao();         $c->ask();          $d->chifan();     }      } ?> 

一个方法中注入多个对像,只需要用逗号隔开就行了,就和函数传一样的。



电话: 1392 8916 720   客服QQ:56667115

© 2014-2015 DESTOON模板堂(dtmoban.com) 版权所有,并保留所有权利。

二维码

扫一扫
获取更多资讯