有没有人知道我可以为控制台/命令行命令(或者实际上在应用程序的任何部分中)创建配置的最佳方式?
我想要实现的是(例如)
$ app/console myapp:sync --server=server_2
connecting to "server2.servers.com"...success!
sync completed.
其中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
对于这个例子,同步的作用并不重要(代码已经被编写为SyncCommand.php),我只想知道要使用哪个配置文件(我假定config.yml或参数。 ini)以及如何阅读该配置(treeBuilder?或类似$ this-> getParameters('myapp')的东西?我怀疑我遗漏了某些明显的东西。
谢谢!
答案 0 :(得分:7)
在命令中,如果扩展ContainerAwareCommand类,则可以使用getContainer()方法访问容器。
您可以在服务文件的参数部分中定义配置:
parameters:
server_1:
hostname: "server1.servers.com"
port: 22
server_2:
hostname: "server2.servers.com"
port: 22
然后您应该能够使用容器访问它们(就像another question中所述):
$this->getContainer()->getParameter('server_1');