![](/img/trans.png)
[英]Symfony 5 Can't Inject EntityManagerInterface Into Validator
[英]Symfony4 Inject EntityManagerInterface into framework agnostic class
我尝试创建“框架无关”业务类。 这意味着,我的类不应该对任何框架类,只有项目依赖项有任何引用。
我尝试了以下代码,service.yml中的typehint没有成功...
这是我的自定义界面:
namespace App\Interfaces;
interface EntityManagerInterface extends \Doctrine\ORM\EntityManagerInterface
{
}
在这里我的框架不可知的业务
use App\Interfaces\EntityManagerInterface;
class MyBusiness
{
public function __construct(EntityManagerInterface $em)
{
...
}
}
这里是我注入EntityManager的控制器:
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Doctrine\ORM\EntityManagerInterface;
class testController extends AbstractController
{
public function testAction(EntityManagerInterface $em)
{
$myBusiness = new MyBusiness($em);
}
}
因此,我为注入错误的类而得到PHP错误:
Argument 1 passed to App\Business\MyBusiness::__construct() must implement interface App\Interfaces\EntityManagerInterface, instance of Doctrine\ORM\EntityManager given, called in /var/www/src/Controller/testController.php on line 7
如何正确地将EntityManager注入我的框架无关的业务?
谢谢
因为你传递了Doctrine的EntityManager
,它显然没有实现你的接口。
我真的不明白这样做的意义,因为并非所有Framework的“EntityManager”都是一样的。
但我能做的第一件事就是制作某种“ Adapter
”,它将传递的EntityManager
封装在你自己的Class中,实现你自己的EntityManagerInterface
,然后将它传递给你的Business。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.