私は疑問に思っていました.中括弧のセマンティクスはPHP内で正確にどのように定義されていますか? たとえば、次のように定義したとします。
$a = "foo";
次に、次の違いは何ですか:
echo "${a}";
echo "{$a}";
つまり、中かっこ内ではなく中かっこの外側にドル記号を配置することで違いが生じる状況や、結果が常に同じである状況はありますか?
私は疑問に思っていました.中括弧のセマンティクスはPHP内で正確にどのように定義されていますか? たとえば、次のように定義したとします。
$a = "foo";
次に、次の違いは何ですか:
echo "${a}";
echo "{$a}";
つまり、中かっこ内ではなく中かっこの外側にドル記号を配置することで違いが生じる状況や、結果が常に同じである状況はありますか?
中括弧には多くの可能性 (省略など) があり、オブジェクトや配列を扱う場合はさらに複雑になります。
私は連結よりも補間を好み、不要な場合は中括弧を省略します。時々、そうです。
${}
構文でオブジェクト演算子を使用することはできません。メソッドを呼び出すとき、または演算子を連鎖するときに使用する必要があります{$...}
(メンバーを取得するための演算子が 1 つしかない場合は、中かっこを省略できます)。
構文は、${}
可変変数に使用できます。
$y = 'x';
$x = 'hello';
echo "${$y}"; //hello
$$
構文は文字列を補間しないため${}
、補間が必要になります。文字列 ( ) を使用したり、ブロック${'y'}
内で連結したりすることもできます。${}
ただし、可変変数はおそらく悪いことと見なすことができます。
配列の場合、どちらでも機能し${foo['bar']}
ます{$foo['bar']}
。$foo[bar]
私はただ(補間の場合のみ-文字列の外側はbar
そのコンテキストでは定数として扱われます)を好みます。
角かっこは、変数名が終わる場所を区切ります。この例はそれ自体を物語っています。
$a = "hi!"
echo "$afoo"; //$afoo is undefined
echo "${a}foo"; //hi!foo
echo "{$a}foo"; //hi!foo
また、これは警告を吐き出すはずです。あなたが使用する必要があります
${'a'}
a
それ以外の場合は、定数であると想定しようとします。