Develop and Download Open Source Software

最近の更新

2012-04-05
2012-03-27

Wikiガイド

サイドバー

戻る

Step5:コンフィグファイルから値を読み込んでみる

このチュートリアルを行う前に……

  • Risolutoのセットアップが終了している必要があります
  • これまでのチュートリアルを理解している必要があります

コンフィグファイルを読み込む(Base編)

このチュートリアルでは、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->parseRISOLUTO_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編)

それでは、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)を参照してください。

戻る


  1. *1当然のことながら、この手順ではIniファイル以外を取り扱うことはできません
  2. *2例えば、model()メソッド内の適切な位置にこれらを記述すればOKです

SourceForge.JP is a Japanese version of SourceForge.net. For developments that are not related to Japan, we recommend you to use SourceForge.net.