Dan*_*ugg 5 php overloading magic-methods getter-setter
做了一些研究之后,我终于找到了一个问题的答案,我很快就会在这里提出这个问题; 你如何通过阵列工作__get,并__set在PHP魔术方法?每当我试图用类似的东西设置一个值$object->foo['bar'] = 42;似乎默默地丢弃它.
无论如何,答案很简单; 该__get方法只需要通过引用返回.在它前面扔了一个&符后,确实有效.
我的问题其实是,为什么?我似乎无法理解为什么这有效.如何__get通过引用返回影响__set使用多维数组?
编辑:顺便说一句,运行PHP 5.3.1
在这种特殊情况下,__set实际上并没有被调用。如果你分解一下发生的事情,应该会更有意义:
$tmp = $object->__get('foo');
$tmp['bar'] = 42
Run Code Online (Sandbox Code Playgroud)
如果__get没有返回引用,则不是将 42 分配给原始对象的“bar”索引,而是分配给原始对象副本的“bar”索引。
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |