这是一个基本的类构造,在使用 DI 之前(我知道,它的结构有点不正确,请尽量集中在问题上)
class Mobile
{
public function getWeight()
{
return 4;
}
}
class User
{
public static function getWeight()
{
$mobile = new Mobile();
return $mobile->getWeight();
}
}
续订后,使用 DI:
class User
{
public $mobile;
public function getWeight()
{
return $this->mobile->getWeight();
}
}
如果我们检查一下,由于它是静态的,getWeight()
因此不需要拥有的实例User
- 创建它的实例毫无意义。但是现在,getWeight()
不能是静态的,所以无论如何都需要一个实例 - 只是因为依赖注入!当然,我知道这个例子有点蹩脚——我只是想指出依赖注入杀死静态方法的逻辑,但有时静态方法需要,因为拥有一个类的实例毫无意义,想想 JAVAMath.max()
方法。如何解决?