gpt4 book ai didi

symfony - 从命令类访问参数

转载 作者:行者123 更新时间:2023-12-01 23:23:00 24 4
gpt4 key购买 nike

我正在添加一个新的命令行。我想访问我的类中的参数 (parameters.yml) 的值。

我读到我应该将此类添加为服务才能访问参数。所以

//config.yml

imports:
- { resource: services.yml }

//services.yml

services:
less_css_compiler:
class: MyVendor\MyBundle\Command\ThemeCommand
arguments: [%less_compiler%]

//参数.yml

parameters:
less_compiler: WinLess.exe

据说通常参数位于类的构造函数中,但如果我这样做:

public function __construct($less_compiler) {
$this->less_compiler = $less_compiler;
}

我收到一条警告,指出缺少第一个参数。在 Command 母类中,有一个名称作为构造函数的唯一参数,但即使我写:

 public function __construct($name, $less_compiler) {
}

它不会改变任何东西..

另一种可能性是调用我的类(class)内的服务:

$service = $this->getContainer()->get('less_css_compiler');

但是我如何获得论证呢?

谢谢

最佳答案

简单的方法,让command扩展ContainerAwareCommand

$this->getContainer()->getParameter('parameter_name');

您应该创建单独的服务类

$service = $this->getContainer()->get('less_css_compiler');

//services.yml

services:
less_css_compiler:
class: MyVendor\MyBundle\Service\LessCompiler
arguments: [%less_compiler%]

在服务类中,像上面提到的那样创建构造函数

public function __construct($less_compiler) {
$this->less_compiler = $less_compiler;
}

从命令类调用服务。

就是这样。

原因:您正在将命令类本身作为服务,位命令类构造函数期望命令名称作为第一个参数。

关于symfony - 从命令类访问参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15636700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com