Yuriko.Net 個別記事

2006-10-20
晴れ

Flexy のテンプレートは t という名前のループ変数が使えない

ゆりこ による 13:14:42 の投稿
カテゴリー: ソフトウェア

このサイトは、HTML_Template_Flexy というテンプレートシステムを使っていますが、テンプレートに foreach によるループ処理が書けるのが便利なところです。しかし、このループ機構に落し穴がありました。

それは、ループ変数として t という1文字の名前の変数が使えないということです。つまり {foreach:tr_list,id,t} などという書き方ができないのです。t という名前の変数は Flexy が内部的に使うために、ループ変数で使うと上書きされたり汚染されたりして、不可解な動作が発生します。この不可解な動作の原因が「t という名前のループ変数を作った」ことに気がつくまでだいぶ時間がかかってしまいました。

わたしは Perl での経験が長く、Perl では foreach ループ内部で $_ というデフォルト変数が使われることに慣れています。PHP でも似たコーディングをするには、1文字名前の変数を使うことになります。記事ならば $a, 日付ならば $d, コメントならば $c という変数を使ってました。そうすると、トラックバック関連のループ処理に $t という名前の変数を使うのは自然な流れですが、そうすると謎な現象 (描画オブジェクトが壊れる etc) が起きてしまったのです。

原因が分かってからは別の名前にしましたが、PHP でも $_ という名前の変数は使えそうなので、Perl 臭いコードになるけどこれを使ってしまおうかな;-)

トラックバック・コメント »

コメントはありません。

上に戻る

※スパム対策プラグインの影響により、すぐにトラックバックが反映されない場合があります。お手数ですが、半日ほど待ってみてください。

コメント投稿

※発言の責任を明確にするため「名無し」「通りすがり」「匿名希望」等の匿名は不可とします。捨てハンドルでもいいので必ず名乗ってください。
XHTML (使えるタグ): <a href="" title="" ktai=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> .
※スパム対策プラグインの影響により、すぐにコメント内容が表示されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る