※ パクレゼルヴではWeb開発エンジニアを大募集中!詳細はこちら
Home > HTMLとか, PHP, Tips, 未分類 > ロジックとデザインの分離について

ロジックとデザインの分離について  

2008/5/30 金曜日 22:36:04

こんばんは。またまたチョコボールです。2日連チャンです。

今回はMVCという考え方におけるVとCのお話です。

自分は業務ではSmartyも使ってます。

Smartyを使う目的はコードの可読性向上、デザイナーとプログラマーの分業、デザインとロジックの分離などありますが、そういう意味において、値の加工はコントローラー側でおこなって変数や配列に格納してビュー側では極力表示だけ!
MVCモデルにおいてはこれが理想だと(勝手に)思ってました。

たとえば下記のような値段を表す変数があったとします。

$price = 1000000;

これをブラウザでは「1,000,000円」のように千の位単位で区切って表示させたい時、

コントローラー側で

$price = number_format($price);

のように加工してからビューに渡す。
こうすべきだと思ってました。

しかしこうしてしまった場合、後でデザイナーから「区切らなくていいよ」等の修正を依頼されたり、仕様が変更した場合など、結局プログラムを書いた側が修正することになり、二度手間で面倒なことになります。

普通に生のデータをビューに渡してテンプレート側で下記のようにコーディングした方が合理的です。

{$price|number_format}

見せる部分はできるだけデザインする側にお任せ。
完全に分業するとしたらそれが理想ですね。
かなり時間が経過した後に仕事を引き継いだ他のプログラマーが修正することになったとしても、コードを追わなくてもテンプレだけを変更すればいいですし。
プログラマーもデザイナーもSmartyを覚えなきゃいけない、というのは大変ですけど。。
(いや実際かなり大変です…)

日付表示に関してもロジック側でタイムスタンプ値のデータがあれば、タイムスタンプのままビューに渡してあげた方が修飾子のdate_formatでいろんなパターンで表示させられます。

できるだけ生のデータをビューに渡した方がデザイナー的には見せ方の選択が広がるわけです。

どう表示させるか(見せるか)というのは本来ビューの役割なので 極力ビュー側に任せた方がいいということですね。

MoriMoriMoriMori HTMLとか, PHP, Tips, 未分類

  1. No comments yet.
  1. No trackbacks yet.