大きく分けて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-2010 BBB All rights reserved.