konekto Inc with PHP , MySQL コネクト株式会社 技術情報コンテンツ


PHPアプリケーション/Smarty

Smartyを知ろう

Smartyを使う前に

今までテンプレートエンジンを使った事がない方は、HTMLの一部分にPHPスクリプトを記述したり、if文やecho関数でHTMLの内容を強引に切り替えるなどしていただろう。 その結果、ちょっとした仕様変更についていく事が出来なくなり、バグが発生したり、「仕様上の都合により、デザイン変更は不可能です」と断る事も少なくなかったはずである。

Webアプリケーションの要点を一言で表すとすれば、「IN(Webブラウザから受け取った情報)に対して、OUT(Webブラウザへのレスポンス)を用意する」だけの事である。 このOUTの最終工程で、定型フォーマットの一部を動的に差し替える処理に、テンプレートエンジンが用いられる。

Smartyを使ったアプリケーションを作成するには、次のような工程が必要である。

  1. 表示する画面のバリエーションを割り出す
  2. 各画面に表示したい動的項目を割り出す
  3. テンプレートの作成
  4. ビジネスロジックの作成(出力したい情報の取得)
  5. ビューの作成(テンプレートへの情報割り付け)

この工程を経て、ようやくSmartyを使ったプログラミングに取りかかる事が可能になる。

変数の割り付け

テンプレートに情報を埋め込むには、変数をテンプレートに割り付ける必要がある。

Smartyには、assign関数が用意されている。 この関数は、これから表示しようとしているテンプレートで使用できる変数を割り付けるものである。

<?php
require_once('Smarty.class.php');

$smarty =& new Smarty();
$smarty->assign('name'$foo_name);
$smarty->assign('age',  $foo_age);
?>

上記例では、nameという名前で$foo_nameの値を、ageという名前で$foo_ageの値を割り付けている。 この手続きを、必要な情報だけ行えばよい。

しかし、1つ1つの変数を割り付けていくと、 だが安心して欲しい。 Smartyでは、1次元の配列変数や、多次元の配列変数を割り付けて、テンプレートの中から多次元配列へのアクセスを行う事が可能になっている。

<?php
require_once('Smarty.class.php');

$smarty =& new Smarty();
$result $db->getAll('SELECT * FROM foo');
$smarty->assign('list'$result);
?>

上記のように、DBMSから取得した2行以上のレコードなどは、配列変数のまま割り付けてしまえばよい。

割り付けた情報をテンプレート内で使う

前項で割り付けた情報をテンプレートに埋め込んでみよう。

<html>
<body>
<p>my name is {$name}.</p>
<p>{$age} years old.</p>
</body>
</html>

上記例では、nameageの値をテンプレートで参照してみたものである。
nameの値が"Terry"で、ageの値が"33"とした場合、次のように表示される。

my name is Terry.
33 years old.

添付ファイル: fileex2.php 2197件 [詳細]
fileex1.php 2376件 [詳細]
fileex2.tpl 1071件 [詳細]
fileex1.tpl 2181件 [詳細]

最終更新のRSS