PHPの変数名には「-(ハイフン)」は使えない

こんな、当たり前?すぎることを本日知りました。

開発中の環境と本番環境の違いを変数にすることにして、Smarty3の変数を定義した。何度マニュアルを読んでも、文法的には間違えているようには思えない。がエラーになる。

よく読むと、Smarty3のマニュアルに「PHP同様、変数名には、英数字とアンダースコア(_)が使える」とあった。ハイフンはダメか!

ということで、ハイフンを取り除いたり、アンダースコアに置換したものは希望通り動作した。

基本過ぎることなのか、あまり直球で書いているところがなかった。

手元に、技術評論社の「パーフェクトPHP」があったので、読んだのだが、変数の項目を読んでもわからなかった。が、今、改めて読み直すと、変数名は「識別子」で構成される。とある。

そして、2ページ前に識別子の定義が書かれていて、そこには、

  • 英数字、アンダースコア、ASCIIの127-255の範囲
  • 数字始まりは不可

と、「きちんと」書かれていた。が、順番に読んでいなければ、ここまで読めない!というかエラーの原因がここにあるとは思ってもみなかったので。一番なじんだCだと使えたかな?使えなかったかな?先頭はともかく使ってたような、使ってなかったような。

とりあえず、覚えておこう。

コメント