Symfony 4 依赖注入

Symfony 4 Dependency Injection

我有class这样的,

use Doctrine\ORM\EntityManagerInterface;

class LoginTools {

private $em;

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

并在控制器中

$logTool = new LoginTools();

问题

autowire 是否应该自动将 EntityManagerInterface 传递给 LoginTools? 因为当我调用 LoginTools class 而不传递参数时,我得到错误

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

此致,

维克托

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

问题是 Symfony 有 DI 容器,它的目的是根据您在 config/services.yaml 中的配置创建服务,然后将它们注入到其他服务的 constructors/functions/properties 中。没有魔法,所有这些创建你的服务并将它们注入其他服务的代码都是自动生成的,并由 Symfony 保存到 var/cache 目录中,你可以自己检查。