2

この質問により、裸の文字列について考えるようになりました。

PHP は、引用符で囲まれていない文字列を検出すると、最初にそれが定数かどうかを確認します。そうでない場合は、それが文字列であると想定して、とにかく続行します。たとえば、私が持っている場合

echo $foo[bar];

bar という定数がある場合は配列キーにそれを使用しますが、そうでない場合は bar をそのままの文字列として扱うため、次のように動作します。

echo $foo["bar"];

これにより、将来、同じ名前の定数が追加された場合、あらゆる種類の問題が発生する可能性があります。

私の質問は、裸の文字列を使用することが実際に理にかなっている状況はありますか?

4

3 に答える 3

14

いいえ、それが理にかなっている例は 1 つもありません。また、常に危険です。引用符なしで文字列を使用することは、定数に対処するために絶対に予約する必要があります。PHP の発明者がどのようにしてこのばかげた動作を導入することを決定したのか、私にはまったく理解できません。これにより、定数の適切な使用がほとんど不可能になります (定義されていない定数にアクセスしようとすると、PHP は黙って愚かにも文字列)何の利益も与えません。

于 2010-03-09T01:15:29.930 に答える
1

これはおそらく正当なものとは見なされませんが、私の友人のつぶやき可能な概念実証 MVC フレームワークであるTweetMVCは、いくつかの場所で引用を避けて、さらにいくつかの文字を絞り込みます。次に例を示します。

foreach(c('mod')as$f)require"t/$f.php";@list($c,$m,$a)=explode('/',@$_GET[r],3);$c=$c?:c('dc');$o=(@include"c/$c.php")?@new$c($m,$a):e(1)
于 2010-03-09T01:50:25.453 に答える
0

裸の文字列をキーとして使用するのは、それが以前define()に定数に使用されていた場合のみです。

于 2010-03-09T01:44:27.197 に答える