我有以下问题。我有一个类,我将不同的类注入其中。根据一些变量,我需要加载该类:
protected $safe;
protected $glass;
public function __construct(
MyPathBlockDynamicpriceSafe $safe,
MyPathBlockDynamicpriceGlass $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\Plock\Dynamicprice\Helper类型的对象用作数组
有什么办法加载这个吗?
PHP允许在这种情况下使用花括号。在您的案例中,您正试图动态访问类属性。这是绝对可能的。看看下面的例子。
$helper = $this->{$this->_ids[$id]};
如果$id
的值为7524
,那么这一小段代码将为您提供safe
类属性。