怎么能通俗易通的了解php中的反射和依赖注入这两个概念
大家讲道理
大家讲道理 2017-04-11 09:09:01
0
11
597

求大神指点,谢谢

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(11)
刘奇

只是名字比较唬人,其实很简单
反射其实就是获取类的信息(把类也看成是对象,然后通过反射类获取这个对象的一些属性), 你比如说有个发送邮件的类。

<?php 
class MailerService
{
    public $mail;
    
    public function __construct(Mailer $mail)
    {
       $this->setHandle($mail);
    }
    
    public function setHandle(Mailer $mail)
    {
         $this->mail = $mail;
    }
}

比如说:
我想知道这个类有哪些方法, 那我可以这样:

<?php 
$class = new ReflectionClass('MailerService');
$methods = $class->getMethods();

我想知道这个类的构造函数要传什么参数

<?php 
$method = new ReflectionMethod('MailerService', '__construct');
$paramters = $method->getParameters();

一言以蔽之, 反射就是获取类的信息的.

控制反转也很好理解,不过要先搞清楚, 控制反转和依赖注入不是一回事.
控制反转是一种目的,而实现方法之一就是依赖注入.
所谓的依赖注入就是不自己new class了, 而是由一个专门的类去做, 由这个类去解决类的依赖的问题,比如上面的MailerService类就依赖Mailer类, 这个专门的类会通过反射去获取MailerService类的构造函数需要什么参数,这个需要的参数也叫作依赖, 然后解决依赖. 这个就叫依赖注入. 一般通过依赖注入的方式来实现控制反转. 上述的那个专门的类一般也叫服务容器.

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template