楽しいだけで十分です

好きなことを書きます

PHPの変数展開は、{$variable}構文を使うのがいいみたいです

同僚さんから、「PHPの変数展開は、{$variable}構文で書くのがいいよ」と教えてもらったので、メモ。
ちなみに、ちゃんとはまだ分かってません・・・難しい。

PHPの変数展開は3種類ある

  1. 単純な構文
  2. 複雑な構文 ({$variable} タイプ)
  3. 複雑な構文 ({$expr} タイプ)

ちなみに、単純と複雑という名前は記述方法の難易度ではなく、表現できることの範囲を表してるらしいです。
PHP: 文字列 - Manual

1. 単純な構文

  • ドル記号($)を見つけると、$の後ろに続く文字列から、パーサーが変数名を形成できることが可能な最長のトークンを取得します。
  • []による配列の指定は可能ですが、次のことができません。
    • インデックスをクォートで囲めない
    • 多次元配列を指定できない
  • プロパティにアクセス可能ですが、次のことができません。
    • プロパティの配列要素を指定できない
    • プロパティのプロパティを指定できない

2. 複雑な構文 ({$variable} タイプ)

  • {$文字列}の形になっている時に、変数を展開してくれます。
  • 基本的に、通常のPHP構文の中で$から始まる変数参照はすべて使えます。

3. 複雑な構文 ({$expr} タイプ)

  • 通常の変数参照だと、1.単純な構文よりできることが少ないです。
  • しかし、${から}までの間の文字が、変数名として有効ではない場合は、${から}の間がPHPの式として評価されるという機能を持っています。
<?php

${". ."} = 'hoge';  // 変数名が、`. .`(dot space dot)という変数に、'hoge'を代入
echo ${". ."};      // 上の行で代入した、'hoge'を出力

まとめ

とりあえず、{$variable}構文で書こう!!!

参考

d.hatena.ne.jp