テンプレートエンジンとは
PHPコードとHTMLをキレイに分けるための仕組みだよ!
通常、PHPだけで画面を作ると…
<h1><?php echo $title; ?></h1>
<p><?php echo $message; ?></p>
こういう感じでHTMLにPHPが混ざるでしょ?でもテンプレートエンジンを使うと…
<h1>{$title}</h1>
<p>{$message}</p>
こんなふうに、HTMLの中にプレースホルダーだけ書く形になる!
ロジック(PHP側)と見た目(テンプレート)を完全に分離できるから、保守しやすくなるってワケ✌️
Smartyの特徴
✅ 良いところ
- HTMLとロジックの分離:ロジックはPHPに、表示はSmartyに任せよう!
- 独自構文がシンプル:
{$var}
や{foreach}
とか、テンプレ職人にも優しい。 - カスタムプラグインが作りやすい:必要に応じて柔軟に拡張可能。
- キャッシュ対応:描画結果を保存して高速化できる!
❌ ちょっと微妙なところ
- 学習コストはそこそこある(慣れるまでちょい時間かかる)
- 最近は**Blade(Laravel)やTwig(Symfony)**に押され気味
- テンプレート自体に多少のロジックが書けちゃうので、乱用されるとカオスになる…
導入手順
方法① composerでインストール
composer require smarty/smarty
方法② 公式サイトからZIPでダウンロード(クラシックスタイル)古い環境やレンタルサーバーでもOK
- Smarty公式GitHubからZIPをDL
- 展開して、
libs/
ディレクトリを自分のプロジェクトにコピー - PHPファイルで
require_once 'libs/Smarty.class.php';
として使う!
require_once('libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->setTemplateDir('./templates');
$smarty->setCompileDir('./templates_c');
$smarty->assign('name', '田中');
$smarty->display('hello.tpl');
✅ メリット
- 超シンプル、古い環境やレンタルサーバーでもOK
- composer使えない状況で便利!
❌ デメリット
- Git管理下にすると
libs/
がやたら重くなる - アップデート手動(セキュリティ的に要注意)
テンプレートファイル作る(例:templates/hello.tpl)
<h1>Hello, {$name}!</h1>
PHP側で値を渡す
require_once('vendor/autoload.php');
$smarty = new Smarty();
$smarty->assign('name', '世界');
$smarty->display('templates/hello.tpl');