Command的Symfony 2配置

mog*_*man 1 configuration command-line symfony

有谁知道我可以为控制台/命令行命令(或者实际上在应用程序的任何部分中)创建配置的最佳方式?

我想要实现的是这个(例如)

$ app/console myapp:sync --server=server_2
connecting to "server2.servers.com"...success!
sync completed.
Run Code Online (Sandbox Code Playgroud)

其中myapp是/src/myBundle/Command/SyncCommand.php下的命令行类和配置(app/config/config.yml?)中的命令行类:

myapp:
    server_1:
        hostname: "server1.servers.com"
        port: 22
    server_2:
        hostname: "server2.servers.com"
        port: 22
Run Code Online (Sandbox Code Playgroud)

对于这个例子,同步的作用并不重要(代码已经被编写为SyncCommand.php),我只想知道要使用哪个配置文件(我假设是config.yml或parameters.ini)和如何阅读该配置(treeBuilder?或类似$ this-> getParameters('myapp')的东西?我怀疑我遗漏了某些明显的东西.

谢谢!

Jak*_*las 7

在命令中,如果扩展ContainerAwareCommand类,则可以使用getContainer()方法访问容器.

您可以在services文件的参数部分中定义配置:

parameters:
    server_1:
        hostname: "server1.servers.com"
        port: 22
    server_2:
        hostname: "server2.servers.com"
        port: 22
Run Code Online (Sandbox Code Playgroud)

然后你应该能够使用容器访问它们(就像在另一个问题中描述的那样):

$this->getContainer()->getParameter('server_1');
Run Code Online (Sandbox Code Playgroud)