こんな、当たり前?すぎることを本日知りました。
開発中の環境と本番環境の違いを変数にすることにして、Smarty3の変数を定義した。何度マニュアルを読んでも、文法的には間違えているようには思えない。がエラーになる。
よく読むと、Smarty3のマニュアルに「PHP同様、変数名には、英数字とアンダースコア(_)が使える」とあった。ハイフンはダメか!
ということで、ハイフンを取り除いたり、アンダースコアに置換したものは希望通り動作した。
基本過ぎることなのか、あまり直球で書いているところがなかった。
手元に、技術評論社の「パーフェクトPHP」があったので、読んだのだが、変数の項目を読んでもわからなかった。が、今、改めて読み直すと、変数名は「識別子」で構成される。とある。
そして、2ページ前に識別子の定義が書かれていて、そこには、
- 英数字、アンダースコア、ASCIIの127-255の範囲
- 数字始まりは不可
と、「きちんと」書かれていた。が、順番に読んでいなければ、ここまで読めない!というかエラーの原因がここにあるとは思ってもみなかったので。一番なじんだCだと使えたかな?使えなかったかな?先頭はともかく使ってたような、使ってなかったような。
とりあえず、覚えておこう。
コメント