【发布时间】:2020-07-15 07:02:54
【问题描述】:
我有以下问题。我有一堂课,我在里面注入了不同的类。根据一些变量我需要加载类:
protected $safe;
protected $glass;
public function __construct(
\My\Path\Block\Dynamicprice\Safe $safe,
\My\Path\Block\Dynamicprice\Glass $glass
){
$this->safe = $safe;
$this->glass = $glass;
}
现在我有了这个硬编码的数组:
public $_ids=array(
14534=>'glass',
7521=>'safe'
);
现在在我的代码中,我需要根据给定的 ID 访问一个类。我试过这样:
$helper = $this[$this->_ids[$id]];
通常我会这样写:
$helper = $this->safe->somePublicMethod();
可以动态做吗?
但它给我一个错误:不能使用 My\Path\Block\Dynamicprice\Helper 类型的对象作为数组。
有没有办法加载这个?
【问题讨论】:
-
你需要这个语法:
$this->{$this->_ids[$id]}; -
“加载类”是什么意思?当您调用构造函数时,这两个类都应该已加载并实例化
-
@NicoHaase 未加载,我的意思是访问。但它已经用
$this->{$this->_ids[$id]};回答了