ロジックとデザインの分離について 
こんばんは。またまたチョコボールです。2日連チャンです。
今回はMVCという考え方におけるVとCのお話です。
自分は業務ではSmartyも使ってます。
Smartyを使う目的はコードの可読性向上、デザイナーとプログラマーの分業、デザインとロジックの分離などありますが、そういう意味において、値の加工はコントローラー側でおこなって変数や配列に格納してビュー側では極力表示だけ!
MVCモデルにおいてはこれが理想だと(勝手に)思ってました。
たとえば下記のような値段を表す変数があったとします。
$price = 1000000;
これをブラウザでは「1,000,000円」のように千の位単位で区切って表示させたい時、
コントローラー側で
$price = number_format($price);
のように加工してからビューに渡す。
こうすべきだと思ってました。
しかしこうしてしまった場合、後でデザイナーから「区切らなくていいよ」等の修正を依頼されたり、仕様が変更した場合など、結局プログラムを書いた側が修正することになり、二度手間で面倒なことになります。
普通に生のデータをビューに渡してテンプレート側で下記のようにコーディングした方が合理的です。
{$price|number_format}
見せる部分はできるだけデザインする側にお任せ。
完全に分業するとしたらそれが理想ですね。
かなり時間が経過した後に仕事を引き継いだ他のプログラマーが修正することになったとしても、コードを追わなくてもテンプレだけを変更すればいいですし。
プログラマーもデザイナーもSmartyを覚えなきゃいけない、というのは大変ですけど。。
(いや実際かなり大変です…)
日付表示に関してもロジック側でタイムスタンプ値のデータがあれば、タイムスタンプのままビューに渡してあげた方が修飾子のdate_formatでいろんなパターンで表示させられます。
できるだけ生のデータをビューに渡した方がデザイナー的には見せ方の選択が広がるわけです。
どう表示させるか(見せるか)というのは本来ビューの役割なので 極力ビュー側に任せた方がいいということですね。