Mat*_*ond 5 php reference variable-assignment
我一直在考虑使用引用赋值作为处理潜在未定义变量的快捷方式.
换句话说,而不是:
$foo = isset($this->blah['something']['else']) ? $this->blah['something']['else'] : null;
if (!is_null($foo) && ...){
//do something with $foo
}
Run Code Online (Sandbox Code Playgroud)
我能做到这一点:
$foo = &$this->blah['something']['else'];
if (!is_null($foo) && ...){
//do something with $foo
}
Run Code Online (Sandbox Code Playgroud)
看起来更简单吧?由于PHP通过引用处理赋值的方式,我不必担心定义$ this-> blah ['something'] ['else'],因为如果它不存在,它将自动创建并设置为NULL.
这种策略不受欢迎吗?
如果您只想测试变量是否已设置且不为空,那么您最好测试:
if (! empty($this->blah['something']['else'])) {...}
Run Code Online (Sandbox Code Playgroud)
这样您就可以避免创建对甚至不存在的值的两个引用。
在我看来,每次创建对同一值的新引用时,您的代码会变得更难以一眼理解。
如果您需要零作为非空,那么您最好创建一个如下所示的全局函数:
function eempty(& $var) {
return empty($var) && $var !== 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |