DTapi教程:09.依赖注入与反射
简介
关于依赖注入与反射的知识大家可以百度,不过学习难度不小,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(); } } ?>
一个方法中注入多个对像,只需要用逗号隔开就行了,就和函数传一样的。