将我自己的库的配置文件放在哪里,并将路径注入到 Symfony 服务中
Where to put config file for my own library and have the path injected into Symfony service
好的,所以我有一个我编写的库,我想在 Symfony 中使用它。它的配置存储在 yml 文件中。
目前我在 src/AppBundle/Resources/config
中有 yml 文件。我需要将此配置文件的路径注入到服务中。目前,我只是在 services.yml
:-
中硬编码了配置文件的相对路径
service_name:
class: My\Library\Service
arguments: ["../src/AppBundle/Resources/config/my_library_config.yml"]
我觉得这不是解决问题的正确方法?
您可以使用 Extension
class 为您生成路径,并在容器编译时替换参数。
然而,Symfony 已经有了 configuration processing method。扩展选项在没有配置的情况下有点无用,所以如果你不是为了重新使用而构建它,请使用 %kernel.root_dir%
来添加正确的路径。
如果您将要重用它,那么将配置设为静态是没有意义的。在这种情况下,我建议您创建一个配置选项,以便人们可以自己配置您的 bundle/options。
您是否有真正的理由想要制作自己的配置?您可以简单地定义一个参数并将整个配置存储在一个参数中,这样您就无需创建和解析自己的配置文件,并允许您从参数系统中受益。
好的,所以我有一个我编写的库,我想在 Symfony 中使用它。它的配置存储在 yml 文件中。
目前我在 src/AppBundle/Resources/config
中有 yml 文件。我需要将此配置文件的路径注入到服务中。目前,我只是在 services.yml
:-
service_name:
class: My\Library\Service
arguments: ["../src/AppBundle/Resources/config/my_library_config.yml"]
我觉得这不是解决问题的正确方法?
您可以使用 Extension
class 为您生成路径,并在容器编译时替换参数。
然而,Symfony 已经有了 configuration processing method。扩展选项在没有配置的情况下有点无用,所以如果你不是为了重新使用而构建它,请使用 %kernel.root_dir%
来添加正确的路径。
如果您将要重用它,那么将配置设为静态是没有意义的。在这种情况下,我建议您创建一个配置选项,以便人们可以自己配置您的 bundle/options。
您是否有真正的理由想要制作自己的配置?您可以简单地定义一个参数并将整个配置存储在一个参数中,这样您就无需创建和解析自己的配置文件,并允许您从参数系统中受益。