Php 什么';这是“什么?”;ObjectManager和EntityManagerInterface之间的兼容性;在Symfony更新后的原则?

Php 什么';这是“什么?”;ObjectManager和EntityManagerInterface之间的兼容性;在Symfony更新后的原则?,php,symfony,orm,doctrine,composer-php,Php,Symfony,Orm,Doctrine,Composer Php,我在Symfony项目中尝试更新(composer更新)后出错 我寻找解决方案,发现有必要修改实体和构造函数中的用法和类型提示。。我已经做到了 然后,我重新启动了一个更新,但出现了另一个错误,更新没有完全完成 结果:我的网站关闭,显示兼容性错误 看这个: 编译错误:App\DataFixtures\AppFixtures::load(条令\ORM\EntityManagerInterface$manager)的声明必须与条令\Common\DataFixtures\FixtureInterfac

我在Symfony项目中尝试更新(composer更新)后出错

我寻找解决方案,发现有必要修改实体和构造函数中的用法和类型提示。。我已经做到了

然后,我重新启动了一个更新,但出现了另一个错误,更新没有完全完成

结果:我的网站关闭,显示兼容性错误

看这个:

编译错误:App\DataFixtures\AppFixtures::load(条令\ORM\EntityManagerInterface$manager)的声明必须与条令\Common\DataFixtures\FixtureInterface::load(条令\Common\Persistence\ObjectManager$manager)兼容 在AppFixtures.php第8行中`

我不明白,什么是兼容性

我不知道如何发布我的代码。。(控制器、YAML、实体…)但我得到了尝试。 在bug出现之前,我的项目在GitHub上,也许它会有用(如果您需要…)

这里是my AppFixtures.php:


在您的基类
Fixture
$manager实例的
条令\Common\Persistence\ObjectManager
,因此您需要将
EntityManagerface
更改为
ObjectManager
。您不能在children类中重写typehint。

我想现在用symfony 4.3更正lhor kostrov, 您需要从
Doctrine\Persistence\ObjectManager

而不是从
Doctrine\Common\Persistence\ObjectManager

你的应用程序不会做任何事情。您可以删除它。只有在测试环境中才需要夹具。您可以让compeser安装--nodev(类似的东西),以防止开发libs安装在您的生产服务器中。而且,如果hoy不使用固定装置,您可以移除该包。Composer移除捆绑设备。(类似的东西)可能您会发现其他错误。不要在生产环境中更新composer。您可以编辑composer.json文件,然后返回symfony yo您以前的版本,以获得快速完整的响应!!我使用固定装置来模拟“属性”(房屋出售),但我可以移除它。。我相信,如果我回到以前的版本,那就好了!感谢您快速完整的回复!!好的,如果我要在基类[Fixture]中将[EntityManagerInterface]更改为[ObjectManager]?它跑了吗?