PhpStorm无法解析符号'doctrine.orm.entity_manager'

时间:2016-12-15 10:22:45

标签: phpstorm

当我在启用了Symfony Plugin的PhpStorm中打开services.xml时,它可以解析所有服务,我可以 Ctrl +单击并转到服务定义,但{{1 }}

它说无法解析符号'doctrine.orm.entity_manager'

这是services.xml文件

doctrine.orm.entity_manager

PhpStorm详细信息:

<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
    <services>
        <service id="example_manager" class="Vendor\XysBundle\Manager\ExampleManager">
           <argument type="service" id="doctrine.orm.entity_manager" />
        </service>
    </services>
</container>
app / cache目录中存在

PhpStorm 2016.3.1 Build #PS-163.9735.1, built on December 6, 2016 JRE: 1.8.0_112-release-408-b2 amd64 JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o 文件。

我怎样才能让这个工作?

1 个答案:

答案 0 :(得分:1)

我有同样的问题。如果您打开定义了doctrine服务的vendor\doctrine\doctrine-bundle\Resources\config\orm.xml文件,您可以看到,没有ID为“doctrine.orm.entity_manager”的服务,但只有“doctrine.orm.entity_manager.abstract

定义如下:

<service id="doctrine.orm.entity_manager.abstract" class="%doctrine.orm.entity_manager.class%" abstract="true" />

如您所见,abstract属性设置为true。这意味着此服务可以充当其他服务的父服务,并且当您使用此抽象父级定义子服务时,您不必定义方法调用或注入构造函数的参数,例如,这些定义将继承自父母。

如果您进行更深入的研究,您会发现%doctrine.orm.entity_manager.class%在与实际引用Doctrine Entity Manager的参数相同的文件中定义:

<parameter key="doctrine.orm.entity_manager.class">Doctrine\ORM\EntityManager</parameter>

所以我想我们应该使用doctrine.orm.entity_manager.abstract,但doctrine.orm.entity_manager也会被识别,虽然我不知道如何。

有关抽象服务定义的进一步说明,请查看此Symfony文档页面:https://symfony.com/doc/current/service_container/parent_services.html