クラスライブラリ

大きく分けて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()関数を使用する。