是否有一种使用多维数组访问实现类的方法?我想要像这样的
$obj = new MultiArrayObject();
$obj['key']['subkey'] = 'test';
echo $obj['key']['subkey']; //expect 'test' here发布于 2015-10-02 13:41:07
没有一个类可以拦截多个级别的数组访问的语法,但是您可以通过 interface一次执行一个级别的访问。
class MultiArrayObject implements ArrayAccess {
protected $data = [];
public function offsetGet($offset) {
if (!array_key_exists($offset, $this->data)) {
$this->data[$offset] = new $this;
}
return $this->data[$offset];
}
/* the rest of the ArrayAccess methods ... */
}这将在您访问MultiArrayObject时立即创建并返回一个新的嵌套$obj['key'],您可以在该$obj['key']上设置数据。
但是,这将不允许您区分setter和getter;所有值都会在访问它们时被隐式创建,这可能会使这个对象的行为变得有点奇怪。
https://stackoverflow.com/questions/32908354
复制相似问题