5

私は、潜在的に未定義の変数を処理するためのショートカットとして参照代入を使用することを考えてきました。

言い換えれば、代わりに:

$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に。

この戦略は眉をひそめていますか?

4

2 に答える 2

0

nullではなく変数が設定されているかどうかをテストするだけの場合は、次のテストを行うことをお勧めします。

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

このようにして、存在すらできなかった値への2つの参照を作成することを回避します。

私の意見では、同じ値への新しい参照を作成するたびに、コードが一目で理解しにくくなります。

空でないものとしてゼロが必要な場合は、次のようなグローバル関数を作成することをお勧めします。

function eempty(& $var) {
  return empty($var) && $var !== 0;
}
于 2012-04-09T20:28:40.947 に答える
0

私は個人的にはもっと慣習的かもしれないと思いますが、そのような参照値を割り当てることは私には少し冗長に思えます。あなたの状況では、より一般的に使用される三項演算子に固執します。多くの場合、より明確に理解できます。もちろん、個人的なセマンティクスにできる限り従う必要があります。

于 2012-04-09T19:46:23.967 に答える