このチュートリアルでは、Risolutoのコンフィグファイルから値を取得する方法についてご説明したいと思います。
さほど難しい話ではありませんので、実際のコードを見てみましょう。Step4で作成した「samples_base.inc」を下記のように修正してください。この手順を行うことによって、このsamples_baseクラスを継承したすべてのLogicでコンフィグファイルを取り扱うことができるようになります。
<?php
require_once( 'Smarty.class.php' );
require_once( RISOLUTO_FUNC . 'risoluto_conf.php' );
abstract class samples_base
{
protected $smarty;
protected $obj_conf;
abstract function model();
abstract function view();
public function __construct()
{
}
public function __clone()
{
}
public function init()
{
$this->obj_conf = new RisolutoConf();
$this->obj_conf->parse( RISOLUTO_CONF . 'risoluto.ini' );
$this->smarty = new Smarty;
$this->smarty->template_dir = RISOLUTO_USERLAND . "samples";
$this->smarty->config_dir = RISOLUTO_USERLAND . "samples";
$this->smarty->compile_dir = RISOLUTO_CACHE;
$this->smarty->cache_dir = RISOLUTO_CACHE;
$this->smarty->caching = false;
$this->smarty->debugging = false;
$this->smarty->force_compile = true;
$this->smarty->compile_check = true;
}
public function errHandler()
{
}
public function clean()
{
unset( $this->smarty );
unset( $this->obj_conf );
}
}
?>
追加したものについて、簡単にご説明したいとおもいます。
まず、「require_once( RISOLUTO_FUNC . 'risoluto_conf.php' );」が追加されました。Risolutoが標準で用意しているコンフィグファイル操作用クラスを読み込みます。なお、「RISOLUTO_FUNC」はRisolutoのコントローラが自動的に定義する定数です。詳しくは、定数一覧を参照してください。
「protected $obj_conf;」という1行も追加されています。これはコンフィグファイル操作用クラスのインスタンスを保持するためのクラス変数です。名称は任意ですが、risoluto.iniを対象とする場合、慣例として「obj_conf」としておくと良いでしょう。
「$this->obj_conf = new RisolutoConf();」と「$this->obj_conf->parse( RISOLUTO_CONF . 'risoluto.ini' );」の2行がinit()メソッドに追加されていることにお気づきでしょうか。この2行は、クラスインスタンスの生成と読み込むファイルの指定を行っています。後者のファイル名を変更することで、任意のファイルをRisolutoで使用することが可能になります*1。
clean()メソッドに「unset( $this->obj_conf );」が追加されているのも確認いただけるかと思います。
これらを各Logicに組み込んでも構いません*2が、一般にBaseに記述する方がよいでしょう。
それでは、Logicの方の処理を見てみましょう。下記のコードを「sample05.php」として保存してください。
<?php
require_once( 'samples_base.inc' );
class sample05 extends samples_base
{
public function model()
{
}
public function view()
{
$this->smarty->assign ( 'default_dsn', $this->obj_conf->get( 'DBS', 'DEFAULT_DSN' ) );
$this->smarty->display( 'sample05.tpl' );
}
}
?>
コンフィグファイルから値を読み込んでいるところがどこか、分かりますでしょうか。「$this->obj_adminconf->get( 'DBS', 'DEFAULT_DSN' )」がそれです。ここでは、「DBS」セクションの「DEFAULT_DSN」というキー項目の値を読み込んでいます。参考までに、Iniファイルの内容を抜粋して下記に記載します。
;☆データベースの設定
; 【設定項目解説】
; 任意の名称で定義。
; RisolutoDbのインスタンス作成時に任意のDSNをコンフィグからロードし設定すること。
[DBS]
DEFAULT_DSN="{DBTYPE}://{USER}:{PASSWORD}@{HOST}/{DBNAME}"
ちなみに、第2引数を省略すると、第1引数で指定したセクション配下の全情報が配列として返却されます。
Design側のコードもここで提示させていただきます。下記のコードを「sample05.tpl」として保存してください。
<HTML>
<HEAD>
<TITLE>sample05</TITLE>
</HEAD>
<BODY>
risoluto.ini内にある、DBSセクションのDEFAULT_DSNキーとして定義されている値は「{$default_dsn}」です。
</BODY>
</HTML>
これらのファイルをアップロードし、最初の画面にWebブラウザからアクセスすると、コンフィグファイルに記載された内容が表示されるはずです。
このように、簡単にコンフィグファイルを取り扱うことが可能です。コンフィグファイル操作用クラスについて詳しく知りたい場合は、RisolutoConfクラス(risoluto_conf.php)を参照してください。