前の記事 ≪:webshots機能追加(ブックマークレット&タブラウザからの投稿対応)
次の記事 ≫:Smarty徹底入門(2):テンプレートにコメントを書く

Smarty徹底入門(1)

2005年04月03日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法

ブログですが書くこともなくなってきたのでPHPテクニックについて書いていこうと思います。

ちょっと古いですが、テンプレートエンジンのSmartyに関して。
テンプレートエンジンのSmarty、使っている方もいるとおもいますがまだまだ少ないと思いますので、簡単に説明します。

Smartyのメリットとして、
-デザイナーとの分業
-テンプレートソースの可読性向上
-変数のカプセル化

があります。
デザイナーと分業を行う際に、デザイナーがPHPはわからずともHTMLは分かれば編集が容易であるという点、あとテンプレート自体のソースも が入らず読みやすくなります。

変数のカプセル化という意味でもオブジェクト指向をやっている人には大きなメリットがあるでしょう。通常 のコードを複数インクルードする場合は変数名の重複が起きて厄介だったりしますが、Smartyでこれを解決できるでしょう。

Smarty を使うには
Smartyのサイトから最新版をダウンロードして、pear などのディレクトリか、プログラム設置ディレクトリにおきます。(要はrequireできるパスに置けばよい)

ダウンロードパッケージを解凍すると、libs というディレクトリがあり、それがSmartyのソースが実際に入っているコードです。Smarty.class.php を読み込んで使います。

<?php

require'Smarty/libs/smarty.class.php';

function get_smarty_object(){
$smarty = new Smarty();
$smarty->template_dir = "./template/"; // テンプレートファイルが存在するディレクトリ
$smarty->compile_dir = "./compile/"; // テンプレートのキャッシュを作成するディレクトリ
return $smarty;
}

$smarty = get_smarty_object();
?>

で、このように関数を使って $smarty オブジェクトを作ります。

オブジェクト指向が好きな方は以下のような感じで Smarty のサブクラスを作ってもよいでしょう。
class customSmarty extends Smarty {
function customSmarty() {
$this->Smarty();
$this->template_dir = "";
$this->compile_dir = "";
}
}

$smarty = new customSmarty();

----

※template_dir として指定しているのは、テンプレートファイルのある基本位置を指定しています。これにより、テンプレートをファイル名だけで呼び出すことができるようになります。
※compile_dir として指定しているのは、Smartyはテンプレートを高速に処理するため、2回目以降のアクセス用にキャッシュを作成します。そのキャッシュを保存するディレクトリを指定しています。

$smarty オブジェクトを作ったら、

$smarty->assign("hensu","aaa");
$smarty->display("テンプレートファイル名");

のようにすると、テンプレートファイル名で指定したテンプレートファイルを読み込んで画面に出力します。

テンプレートファイルの中身は、
----
hensu に {$hensu} が設定されました。
----
のような感じだとすると
----
hensu に aaa が設定されました。
----
と、画面に表示されます。

(明日(4/4)に続く)

関連の記事検索:smarty, PHP, Smarty, WebDevelop
スポンサード リンク

By.KJ : 2005年04月03日 12:23 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)