访问类取决于某个变量



我有以下问题。我有一个类,我将不同的类注入其中。根据一些变量,我需要加载该类:

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类属性。

最新更新