大きく分けて2つのプログラムを作成しましたが、Smartyの初期化やデータベースへの接続は
同じことを繰り返しています。
そこで、今回はこれらをライブラリとしてまとめようと思います。
Smartyを使うには、インスタンス化して各種ディレクトリを登録しています。
これをクラスとして共通化します。Smarty自体クラスなのでSmartyを継承し
派生クラスを作成します。
phpでクラスを作成するには以下のように記述します。
<?php
class クラス名 {
......
}
?>
継承する場合
<?php
class クラス名 extends 基底クラス名 {
......
}
?>
Smartyから派生してコンストラクタで各種ディレクトリを設定します。
<?php
require_once('Smarty.class.php');
if(!defined("B3_TPL_PATH")){
define("B3_TPL_PATH","../templates");
}
if(!defined("B3_TPL_COMPILE_PATH")){
define("B3_TPL_COMPILE_PATH","../templates_c");
}
if(!defined("B3_TPL_CONFIG_PATH")){
define("B3_TPL_CONFIG_PATH","../configs");
}
if(!defined("B3_TPL_CACHE_PATH")){
define("B3_TPL_CACHE_PATH","../cache");
}
class B3Tpl extends Smarty{
function __construct(){
$this->Smarty();
$this->template_dir = B3_TPL_PATH;
$this->compile_dir = B3_TPL_COMPILE_PATH;
$this->config_dir = B3_TPL_CONFIG_PATH;
$this->cache_dir = B3_TPL_CACHE_PATH;
}
}
?>
このようにクラスライブラリを作ることでソースがだいぶすっきりします。
さらに、デバッグに関しても楽になりますね。
必要であれば、各種ディレクトリを設定する関数を追加します。
function SetTemplateDir($dir){
$this->template_dir = $dir;
}
......
これで、テンプレートのライブラリの作成は終了です。
classを定義するには、class{}とする。継承するには、extendsを指定する。
php5からは、コンストラクタとデストラクタを__construct(),__destruct()も使用できる。
定数の定義は、defineを使用する。
定数が定義されているかを知るには、defined()関数を使用する。
Copyright 1997-2008 BBB All rights reserved.