[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 メーリングリストの案内