【发布时间】:2015-01-22 14:37:14
【问题描述】:
我阅读了很多关于ArrayAccess PHP 接口的过去问题,它的方法offsetGet 可以返回一个引用。我有一个实现这个接口的简单类,它包装了一个array 类型的变量。 offsetGet 方法返回一个引用,但是我收到一条错误消息 Only variable references should be returned by reference。为什么?
class My_Class implements ArrayAccess {
private $data = array();
...
public function &offsetGet($offset) {
return isset( $this->data[ $offset ] ) ? $this->data[ $offset ] : null;
}
...
}
我希望能够在这个类中使用多维数组:
$myclass = new My_Class();
$myclass['test'] = array();
$myclass['test']['test2'] = array();
$myclass['test']['test2'][] = 'my string';
【问题讨论】:
-
因为你返回
NULL未绑定到一个变量,如果你将它重写为if(!isset( $this->data[ $offset ]) $this->data[ $offset ] = null; return $this->data[ $offset ];有帮助吗? /懒得测试 -
您的函数返回表达式的结果,而不是引用。
& null引用是不可能的。试试临时变量。
标签: php arrayaccess