在处理可能未定义的变量时,在PHP中使用引用赋值是不好的做法吗?

时间:2012-04-09 19:26:04

标签: php reference variable-assignment

我一直在考虑使用引用赋值作为处理潜在未定义变量的快捷方式。

换句话说,而不是:

$foo = isset($this->blah['something']['else']) ? $this->blah['something']['else'] : null;
if (!is_null($foo) && ...){
    //do something with $foo
}

我可以这样做:

$foo = &$this->blah['something']['else'];
if (!is_null($foo) && ...){
    //do something with $foo
}

似乎更简单,对吧?由于PHP通过引用处理赋值的方式,我不必担心定义$ this-> blah ['something'] ['else'],因为如果它不存在,它将自动创建并且设置为NULL。

这种策略不受欢迎吗?

2 个答案:

答案 0 :(得分:0)

我个人认为可能更传统,但是分配这样的推荐值对我来说似乎有点多余。在你的情况下,我会坚持使用更常用的三元运算符。通常,理解起来要清楚得多。当然,你应该尽可能地遵循你的个人语义。

答案 1 :(得分:0)

如果您只想测试变量是否设置而不是null,那么最好测试一下:

if (! empty($this->blah['something']['else'])) {...}

这样就可以避免创建对一个甚至不存在的值的两个引用。

在我看来,每次创建一个相同值的新引用时,您的代码一目了然变得难以理解。

如果你需要零作为非空,那么你最好创建一个像这样的全局函数:

function eempty(& $var) {
  return empty($var) && $var !== 0;
}