No.1ベストアンサー
- 回答日時:
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アプリを作っていたときに比べると驚くほど楽に作ることができるようになっています。
No.2
- 回答日時:
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/
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PostgreSQL 画像とカテゴリーを出力したいのですが、取得の条件を付ける方法がわかりません。 2 2022/05/01 18:03
- Windows 10 指定したファイルを任意の範囲のディレクトリ内に上書き保存したい 1 2022/11/24 10:42
- PHP 「teratail」での回答内容がいまいちわかりません。 1 2022/09/10 05:05
- PHP PHP & MySQL: Server-side Web Development ペーパ 1 2022/04/19 19:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
POSTで受け渡したものを保存し...
-
PHPで値を保持する方法
-
こんなことはPHPで可能なのでし...
-
IFRAME内PHPのセッション変数取...
-
動的にhtmlテーブルを表示
-
asp.netでのセッションを使用し...
-
閉じるボタン「×」を制御したい
-
HTMLエスケープ処理とデーター...
-
php に関して質問です。 各ユー...
-
Dosブロンプトでtabを出力したい
-
switch()文で値の大小比較
-
DTOとEntityの差は何ですか。
-
「取得先」という表現について
-
excel access連携 このテーブル...
-
ファイル名に日付の挿入
-
shシェルスクリプト 空白行の...
-
wordの差し込み印刷で文字...
-
ps3で久しぶりにCDの音楽情報取...
-
【C#】DataGridViewの最大列数...
-
Excel VBA:特定の文字列以降(...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ログイン画面から入って、「戻...
-
POSTで受け渡したものを保存し...
-
ブラウザバックしてもチェック...
-
php 入力画面から確認表示画面...
-
HTMLフォームのデータ引き継ぎ...
-
VBAで重複チェックの仕方を教え...
-
php history.back()の戻るボタ...
-
セッション使用時のフォームの...
-
HTMLエスケープすべき場所につ...
-
PHPで返信メールにチェックボッ...
-
HTMLエスケープ処理とデーター...
-
閉じるボタン「×」を制御したい
-
セッションを使用したページ遷移
-
携帯サイトにお気に入りに登録...
-
ウェブアプリの設計に問題がな...
-
GETとPOST
-
入力系のプログラミング手法に...
-
フォームを使わずにPOST送信す...
-
まとめ:DBに接続し、値を表示...
-
「ページネーション」で検索キ...
おすすめ情報