2009-07-01

【PHP】Smartyのススメ

SmartyはPHPによるテンプレートエンジン.



- Smartyの考え方 -

WebページってHTMLとかPHPとかSQLとかいろんな言語が1つのファイルに書いてあってカオスwww

つーか,デザイン担当とロジック担当が違ったら大変すぎるよな.

・・・じゃあ,最初からデザインとロジックでファイルを分けりゃいいんだ!





こんな感じ.

Smartyの実体はPHPによって書かれたクラスファイル.

よって,PHPが使える環境であればどこでも使える.

レン鯖であっても,



公式:http://www.smarty.net/



のdownloadからDLしたディレクトリを丸ごとうpすればいい.

しかし,その場合,セキュリティ対策は必要.



以下に例.



▼owata.php

<?php
require_once 'config/config.inc.php'; // ここにディレクトリ場所とかdefineされてる
require_once _DIR_SMARTY_LIBS . 'Smarty.class.php';

$smarty->Smarty();
// Smartyのディレクトリ設定
$smarty->template_dir = _DIR_SMARTY_TEMPLATES; // templeteディレクトリ
$smarty->compile_dir = _DIR_SMARTY_COMPILE; // completeディレクトリ
$smarty->config_dir = _DIR_SMARTY_CONFIG; // configディレクトリ
$smarty->cache_dir = _DIR_SMARTY_CACHE; // cacheディレクトリ

$smarty->assign('owata', 'そうだ!樹海に行こう!');
$smarty->display("owata.tpl");
?>

▼owata.tpl

<html>
<body>
ニートの提案「{$owata}」
</body>
</html>

▼実行結果(owata.phpにブラウザからアクセス)

ニートの提案「そうだ!樹海に行こう!」



owata.phpにアクセスすると,


$smarty->display("owata.tpl");

で,テンプレートファイルowata.tplを読み出して中のHTMLを表示する.

そのとき,予め,


$smarty->assign();

で,設定しておいた中身の置き換えを行う.

ここでは,owata.tpl中の{$owata}を「そうだ!樹海に行こう!」に置き換える.



ちなみに,テンプレートファイルのディレクトリ位置は,


$smarty->template_dir

で設定したディレクトリ位置となる.





これが非常に便利だと考えられるのは,PHPの処理次第でテンプレートを変更できることにある.

例えば,PHPでありがちな,「エントリー」→「内容確認」→「完了」.

<input>タグのaction属性を自分にしておき,ボタンを押したときのPOSTで判断して処理を変える場合,


if(isset($_POST["entrySubmit"])) {
// ~ここにいろいろ処理~
// エントリー内容の確認
$smarty->display("confirm.tpl");
}
else if($isset(_POST["confirmSubmit"])) {
// ~DBに登録とかいろいろ処理~
// 登録内容の表示
$smarty->display("entryResult.tpl");
}
else {
// 通常の表示(エントリーページ)
$smarty->display("entry.tpl");
}

といった感じに,状況に応じてテンプレートファイルを変更することが可能.



0 件のコメント: