[PHP-users 26911] Re: smarty での標準的な作り方を知りたい

遠藤 俊裕 endo_t @ nifty.com
2005年 9月 16日 (金) 22:21:49 JST


遠藤です。

色々な意見ありがとうございました。

今回釈然としなかったのはデータの定義が一カ所でそれが include
先で使われると言うところだったのですが、これは仕方ないと諦め
ました。それより作りの整理に専念したいと思います。

大体の人が、標準化を推し進めると軋轢が生じる、との意見をお持
ちだと思います。私もしかり、です。ただ、今後の保守性を考える
と多少の規制・制限はやむを得ないと思っております。
smarty もいわゆる規制・制限の一つだと思っています。その代わり、
view と logic を分ける事が出来る恩恵を授かるのだと思っており
ます。

で、今回は以下のルールにする事にしました。

・index.php 以外に用意する php は各 tpl に渡すためのデータを
 生成するために用意する事にして、各 tpl の名称と同じにする。
・index.php やその他 URL から指定されるページはそこに使用さ
 れるであろう全データを用意し、tpl に渡す。
・渡す変数名は各 tpl の名称と同じにし、連想配列で渡す。
 例)
  $Event=array();
  while( $row = $rs->fetchrow(DB_FETCHMODE_ASSOC))
    $Event[] = array( "Date"=>$row['Date'], "Text"=>$row['Text'] );
  $Latest=array();
  :
  while( $row = $rs->fetchrow(DB_FETCHMODE_ASSOC))
    $Latest[] = array( "Date"=>$row['Date'], "Text"=>$row['Text'] );
  :
  $Main = Array( "Event"=>$Event, "Latest"=>$Latest );
  $smarty->assign("Main", $Main);
  $smarty->assign("Head", $Head );
  ※上記 Main を Main.php にて作成、取り出そうと思っております。
・使う側では
  {$Head.Title} の様に使う。

もし、これを見て、「こんな問題がある!」「こうしたらどうや?」
的な意見がありましたらお願いします。
まだ机上の空論なので、現実、壁にぶつかって行くと思います。
理想的な作りは無理にしても、出来るだけ理想に近い作りに出来るよ
うに頑張ってみようと思います。

次の課題は tpl 先で使いたい部品をどう定義して行くかです(^^;
例えば、「丸縁箱」は部品として定義されていればとても使い勝手が便
利です。
<RECTANGLE TYPE=CURVE BGCOLOR=WHITE LINECOLOR=ORANGE COL=2>
<TR><TD>9/15</TD><TD>今日は良い霧雨だ</TD></TR>
<TR><TD>9/16</TD><TD>今日は良い天気だ</TD></TR>
</RECTANGLE>
とか(RECTANGLE なんて無いです(^^;)。これをはき出す部品を、上記
で言うなら、
{RECTANGLE Data=$Event} みたいな。
さらにそういうのを IDE なんかで開発できるとうれしいですね。
夢は広がりますが、能力足りなくて思うように行かないです(^^;

ってか、そういう部品集ってあるんですかね(^^;

ご意見ありがとうございましたm(_ _)m

-- 
遠藤俊裕 <endo_t @ nifty.com>



PHP-users メーリングリストの案内