首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多维ArrayObject

多维ArrayObject
EN

Stack Overflow用户
提问于 2015-10-02 13:32:32
回答 1查看 1.1K关注 0票数 0

是否有一种使用多维数组访问实现类的方法?我想要像这样的

代码语言:javascript
复制
$obj = new MultiArrayObject();
$obj['key']['subkey'] = 'test';
echo $obj['key']['subkey']; //expect 'test' here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-02 13:41:07

没有一个类可以拦截多个级别的数组访问的语法,但是您可以通过 interface一次执行一个级别的访问。

代码语言:javascript
复制
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;所有值都会在访问它们时被隐式创建,这可能会使这个对象的行为变得有点奇怪。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32908354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档