Dan*_*ugg 5 php null reference magic-methods
快速规格:
PHP 5.3
error_reporting(-1) // the highest
Run Code Online (Sandbox Code Playgroud)
我正在使用__get()引用技巧来神奇地访问对象中任意深度的数组元素.
快速举例:
public function &__get($key){
return isset($this->_data[$key])
? $this->_data[$key]
: null;
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为$key没有设置,它试图null通过引用返回,当然抛出Only variable references should be returned by reference ...我尝试修改它如下:
public function &__get($key){
$null = null;
return isset($this->_data[$key])
? $this->_data[$key]
: $null;
}
Run Code Online (Sandbox Code Playgroud)
仍然没有工作,虽然,我假设设置$null到null实质上unset()这样.
我能做什么?谢谢!
刚想我会推广这个问题,因为它有点相关(PHP魔术和参考); __callStatic(),call_user_func_array(),引用和PHP 5.3.1.我还没有找到答案...除了修改PHP核心.
web*_*ave 19
这与null三元运算符无关,而是三元运算符:
用一个if/else不会重写通知:
public function &__get($key)
{
$null = null;
if (isset($this->_data[$key])) {
return $this->_data[$key];
} else {
return $null;
}
}
Run Code Online (Sandbox Code Playgroud)
三元运算符不能产生引用.他们只能返回值.