クラスライブラリ

メモ:  Category:php

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

bluenote by BBB