Dependency injection Symfony 3.4.4+Sonata管理包+现有实体

Dependency injection Symfony 3.4.4+Sonata管理包+现有实体,dependency-injection,sonata-admin,symfony-3.4,Dependency Injection,Sonata Admin,Symfony 3.4,我从Symfony 3.4.4+SonataAdmin包开始 对我来说一切都正常 我已经通过php bin/console生成了实体,并且在SonataAdmin包中集成了实体。sonata:admin:generate实体在src/AppBundle/Resources/config/services.yml中生成 而且该文件没有集成到我的包中 我读过,使用依赖项注入是加载该文件的最正确方法,但我不知道它是如何实现的 有人能给我解释一下如何安装依赖项注入,以及如何通过symfony的良好实践正

我从Symfony 3.4.4+SonataAdmin包开始

对我来说一切都正常

我已经通过php bin/console生成了实体,并且在SonataAdmin包中集成了实体。sonata:admin:generate实体在src/AppBundle/Resources/config/services.yml中生成

而且该文件没有集成到我的包中

我读过,使用依赖项注入是加载该文件的最正确方法,但我不知道它是如何实现的


有人能给我解释一下如何安装依赖项注入,以及如何通过symfony的良好实践正确加载此文件吗?

我想你有些困惑。 依赖项注入是软件开发中的一个原则,它通过不直接在类内设置属性来将类依赖项与其他类解耦。例如,您可以将其提供给构造函数,或者随后通过公共setter方法进行设置。这样,类就可以被替换,这对测试源代码尤其有益

因此,您不能安装软件开发原则

并且您的实体不是在您的services.yml中生成的。您的服务在这里定义,您的实体通常转到src/AppBundle/Entity

Symfony/Sonata通过在services.yml中定义服务并告诉他们将获得哪些参数来使用依赖注入

比如说

services:
    mailer:
        class:     Mailer
        arguments: ['%mailer.transport%']
这里,mailer.transport参数将被注入到Mailers类构造函数中

app/config文件夹中有许多yml文件,但所有文件都统一在config.yml中

所以如果你没有像这样的指导

- { resource: "@AppBundle/Resources/config/services.yml" } 

在你的app/config/config.yml中,你的服务将永远不会被加载。

你在app/config/config.yml中有这一行-{resource:@AppBundle/Resources/config/services.yml}吗?没有,我没有那个依赖注入。非常感谢。