PHPの変数展開は、{$variable}構文を使うのがいいみたいです
同僚さんから、「PHPの変数展開は、{$variable}構文で書くのがいいよ」と教えてもらったので、メモ。
ちなみに、ちゃんとはまだ分かってません・・・難しい。
PHPの変数展開は3種類ある
- 単純な構文
- 複雑な構文 ({$variable} タイプ)
- 複雑な構文 ({$expr} タイプ)
ちなみに、単純と複雑という名前は記述方法の難易度ではなく、表現できることの範囲を表してるらしいです。
PHP: 文字列 - Manual
1. 単純な構文
- ドル記号(
$
)を見つけると、$
の後ろに続く文字列から、パーサーが変数名を形成できることが可能な最長のトークンを取得します。 []
による配列の指定は可能ですが、次のことができません。- インデックスをクォートで囲めない
- 多次元配列を指定できない
- プロパティにアクセス可能ですが、次のことができません。
- プロパティの配列要素を指定できない
- プロパティのプロパティを指定できない
2. 複雑な構文 ({$variable} タイプ)
{$文字列}
の形になっている時に、変数を展開してくれます。- 基本的に、通常のPHP構文の中で
$
から始まる変数参照はすべて使えます。
3. 複雑な構文 ({$expr} タイプ)
- 通常の変数参照だと、1.単純な構文よりできることが少ないです。
- しかし、
${
から}
までの間の文字が、変数名として有効ではない場合は、${
から}
の間がPHPの式として評価されるという機能を持っています。
<?php ${". ."} = 'hoge'; // 変数名が、`. .`(dot space dot)という変数に、'hoge'を代入 echo ${". ."}; // 上の行で代入した、'hoge'を出力
まとめ
とりあえず、{$variable}構文で書こう!!!