CodeIgniterでPHPTALテンプレートを使う

CodeIgniter用のPHPTALテンプレートパーサークラスをつくってみました。
CodeIgniterでPHPTALをテンプレートとして使えるようになります。
※PHPTALのライブラリをapplication/library/phptal
ディレクトリに保存して、パスが通るようにしなければなりません。
その他、PHPTAL_PHP_CODE_DESTINATION定数にPHPTALのコンパイルされたファイルを保存する場所を設定しておく必要があります。
無い場合はデフォルトの設定が使われます。

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 *
 * @category
 * @package    Phptal Parser Class
 * @author     KUNIHARU Tsujioka <kunitsuji@gmail.com>
 * @copyright  Copyright (c) 2008 KUNIHARU Tsujioka <kunitsuji@gmail.com>
 * @copyright  Copyright (c) 2006-2008 Usagi Project (URL:http://usagi.mynets.jp)
 * @license    New BSD License
 * @version    2008-04-23 Ver 0.1.0
 */

require_once "PHPTAL.php";
//require_once "myPostFilter.php";

class Phptal_parser
{

    private $_PHPTAL = NULL;
    private $_CI     = NULL;

    public function __construct($config = array())
    {
        //parent::__construct();
        $this->_PHPTAL = new PHPTAL();
        $this->_CI =& get_instance();

        if (count($config) > 0)
        {
            $this->initialize($config);
        }
        log_message('debug', "Phptal_parser Class Initialized");
    }

    /*
     * Method: fetch
     *
     * @param  str tmplatename
     * @param  arr data
     * @param  arr options meta-http, meta-name, js, css,etc
     *
     */
    public function fetch($tmpl, $data, $options = array()) {
        $this->_CI->load->config('phptal_parser');

        $config   = $this->_CI->config->config;
        $dir      = $config['dir'];
        $suffix   = $config['suffix'];
        $tmplPath = sprintf('%s%s%s', $dir, $tmpl, $suffix);

        //$this->_CI->benchmark->mark('phptal_parse_start');

        // title
        if (isset($data['title'])) {
            $data['title'] = $data['title'];
        } else {
            $data['title'] = 'no-title';
        }

        // instance
        $phptal = $this->_PHPTAL;
        $phptal->setTemplate($tmplPath);

        foreach($data as $p => $value) {
            $phptal->$p = $value;
        }
        //フィルター実行
        /*
        $filter = array();
        $phptal->setPostFilter(new FilterChain());
        */
        // execute the template
        try {
            $result = $phptal->execute();
        }
        catch (Exception $e){
            echo $e;
            exit;
        }
        //$this->_CI->benchmark->mark('phptal_parse_end');
        return $result;
    }

    /*
     * Method: view
     *
     * @param  str tmplatename
     * @param  arr data
     * @param  arr options meta-http, meta-name, js, css,etc
     *
     */
    public function view($tmpl, $data, $options = array()) {
        echo $this->fetch($tmpl, $data, $options);
    }
}
?>