電子書籍の厳選無料作品が豊富!

PHPでスマーティというものがありますが、これはどんなものですか。

A 回答 (2件)

WEBアプリ(ホームページ等)を作るときに、画面を表示してくれるテンプレート(ひな形)のようなものです。

PHP、あるいはPerlでもそうなのですが、これらでWEBアプリを書いたときに、画面の表示と、データを処理する部分とが入り乱れて非常に見にくい内容になります。スマーティ(Smarty)は、画面の表示部分だけをPHPとは別のスクリプト(つまり、これがSmartyなわけですが)で書いておいて、PHPからはデータだけを渡してもらうようにしたものです。

たとえば……普通に書くとこんな感じです。
//---で挟んだ部分が画面表示の処理で、それ以外がデータの処理になっています。

:
$thereisheader=true;
//------------------------------------------------------------------------------
print <<"EOM";
<br><div align="center">
<h3>- 以下の内容でよろしければ送信ボタンを押して下さい -</h3>
<form action="http://xxx.xxx.xx/yyy/formhandle.php" method="POST">
<input type=hidden name=mode value=send>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 width="80%" BORDER=0><TR>
<TD BGCOLOR="$tbl_col1">
<table border=0 cellspacing=1 cellpadding=5 width="100%">
EOM
//------------------------------------------------------------------------------
$bef='';
$morder=false;
$orderlist=array();
:
:

これが……こんな感じになります。

:
$thereisheader=true;
$smty=new Smarty;

// Smartyにデータを引き渡す
$smty->assign("msg1","- 以下の内容でよろしければ送信ボタンを押して下さい -");
$smty->assign("script","http://xxx.xxx.xx/yyy/formhandle.php");
$smty->assign("tbl_col1","red");

// テンプレートファイルform1.tplに、フォームの定義が書かれている。表示指示
$smty->display("form1.tpl");
//
$bef='';
$morder=false;
$orderlist=array();
:

form1.tplの内容が以下のようになっていて、PHPから渡されたmsg1とscript、tbl_col1というデータの内容が、{$msg1}と{$script}、{$tbl_col1}の位置にはめ込まれて表示されます。PHPのソースと、Smartyのテンプレートファイルを分けることができるので、PHPの内容が非常に読みやすくなるという利点があります。

<br><div align="center">
<h3>{$msg1}</h3>
<form action="{$script}" method="POST">
<input type=hidden name=mode value=send>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 width="80%" BORDER=0><TR>
<TD BGCOLOR="{$tbl_col1}">
<table border=0 cellspacing=1 cellpadding=5 width="100%">

実際にPHPとSmartyでWEBアプリを作っていますが、PerlだけでWEBアプリを作っていたときに比べると驚くほど楽に作ることができるようになっています。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2007/09/15 09:23

No.1さんが書かれているとおり、PHPでのロジック(処理)の箇所とView(表示)の箇所を分離させて、ソースを見やすくするテンプレートエンジンです。



ロジックとViewが同一ファイル内に書かれていると、あとで見直したり修正するときに結構見づらかったりします。

そこでSmartyを使いロジックはロジック、ViewはViewという風に分離させます。


またSmartyには、いろんな便利な関数や修飾子などが容易されており、View(Smarty)内でも多少の処理が書けるようになっています。



ただ、本当にロジックとViewの分離という意味では、Smarty内での処理はあまりオススメできません。また、パフォーマンスを求めるのであれば、それもまたあまりオススメできません。


詳しくはURLを参照してください。
http://smarty.php.net/manual/ja/

参考URL:http://smarty.php.net/manual/ja/
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2007/09/15 09:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!