テンプレートエンジンとは

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

  1. Smarty公式GitHubからZIPをDL
  2. 展開して、libs/ ディレクトリを自分のプロジェクトにコピー
  3. 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');