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