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

Yamaya Naoki qaz_qwerty_me @ yahoo.co.jp
2005年 9月 17日 (土) 09:10:23 JST


山谷と申します。

 遠藤さんと論点が違うのでですが、参考までに現時点で私が
実践している Smarty での設計手順?を披露させて頂きます。

・設計は、ページ・レイアウトとdbを先行して進め、ページ
・レイアウトとdbの差をPHPのロジックで埋める感じで記
述できるのが理想? このような用途に利用できる関数が豊富
に用意されているのが Smarty と感じています。

・Smartyはdbを併用することでより大きなメリットが得られ
る。 一般的なページには何らかの繰り返しがあるので、それ
をdb化することで、ロジックを大幅に簡略かできる。
*PHP5には、SQLiteというPHP5にバンドルされ
ているdbがあるので利用しないと無駄?


例として、お店の一覧表を表示するページを作る場合
*お店の詳細情報が繰り返し表示される
*下記のスクリプトはイメージを記述しているので、そのまま
では動作しないと思います。スペル・ミスも・・・ ^ ^;
--- HTML ---
<TABLE>

 <TR>
  <TD>お店A</td> <TD>住所A</td> <TD>9:00-20:30</TD>
 </tr>

 <TR>
  <TD>お店B</td> <TD>住所B</td> <TD>9:30-20:00</TD>
 </tr>

</table>
-----------------------

--- Omise_SQLite.SQL -----
CREATE TABLE Omise (
 Name VARCHAR(10),
 Addr VARCHAR(20),
 Time VARCHAR(10),
 Primary Key ( Name )
);
------------------------------------


テンプレートやPHPを記述すると・・・
--- Omise.tpl ----
<TABLE>

{FOREACH FROM=Omise ITERM=$Omise_TD}
 <TR>
  <TD>{$Omise_TD.Name}</td>
  <TD>{$Omise_TD.Addr}</td>
  <TD>{$Omise_TD.Time}</td>
 </tr>
{/FOREACH}

</table>

--- Omise.PHP ------
<?php
$result = sqlite_query( $dsn, "select * from Omise;" );
while( $Omise_TD  = sqlite_fetch_query( $result ) ) {
  $Omise[] = array(
              "Name"=>$Omise_TD['Name'],
              "Addr"=>$Omise_TD['Addr'],
              "Time"=>$Omise_TD['Time']
                  );
}
$Smarty->assign( "Omise", $Omise );
$Smarty->display( "XXX.tpl" );
?>
--------------


上記のようにdb設計を先行する事で、じっくり検討したdb
のフィールド名をPHPでも利用でき(連想配列を利用時)、そ
れをテンプレートでも引用する事で、悩まし名前の問題を1度
で済ませられて感動しています。
-以上-

__________________________________
 For All Sports Fans!
 http://pr.mail.yahoo.co.jp/yells/



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