Symfony 4依赖注入

时间:2018-07-28 16:59:13

标签: php dependencies code-injection symfony4

我有这样的课程,

use Doctrine\ORM\EntityManagerInterface;

class LoginTools {

private $em;

public function __construct(EntityManagerInterface $em)
{
    $this->em = $em;
}

并在控制器中

$logTool = new LoginTools();

问题

自动接线是否应自动将EntityManagerInterface传递到LoginTools? 因为当我在不传递参数的情况下调用LoginTools类时会出错

Too few arguments to function App\Utils\LoginTools::__construct(), 0 passed exactly 1 expected

谨此问候

维克多。

1 个答案:

答案 0 :(得分:0)

如您所说,LoginTools是一项服务。这意味着,您不必像在代码中那样创建代码,Symfony会为您创建它,而您只需将此服务注入控制器即可,而不是EntityManagerInterface

问题是Symfony具有DI容器,目的是根据config/services.yaml中的配置创建服务,然后将其注入其他服务的构造函数/函数/属性中。毫无疑问,所有创建您的服务并将其注入其他服务的代码都是自动生成的,并由Symfony保存到var/cache目录中,您可以自行检查。