CodeIgniter ユーザガイド 日本語版 Version 2.0.1


設定クラス

設定クラスは、設定情報を取得する手段を提供します。設定情報は、 デフォルトの設定ファイル (application/config/config.php) または、ユーザ定義の設定ファイルから取得できます。

Note:このクラスは、システムで自動的に初期化されるので、手動で初期化する必要はありません。

設定ファイルの詳細

初期状態では、CodeIgniter には、application/config/config.php にある一個のメイン設定ファイルがあります。 テキストエディタを使ってファイルを開くと、$config という名前の配列に、設定項目がセットされているのがわかると思います。

このファイルにユーザ定義の設定項目を追加することもできますし、 設定項目を分けておきたい場合は (ユーザ定義の設定項目が必要だと仮定した場合の話です)、 単に、ユーザ用のファイルを作成し、config フォルダに保存するだけです。

Note: ユーザ用の設定ファイルを作成する場合は、メインのものと同じフォーマットを使って、 $config という名前の配列に設定項目をセットしてください。 CodeIgniter では(配列の添字が他と同じ名前でないとすれば)配列の名前が同じであったとしても衝突がないように、設定ファイルが賢く管理されます。

設定ファイルの読み込み

Note: CodeIgniter では、メインの設定ファイル (application/config/config.php) は自動で読み込まれますので、 ユーザ定義の設定ファイルだけをロードする必要があります。

設定ファイルをロードするには2つの方法があります:

  1. 手動での読み込み

    ユーザ定義の設定ファイルをロードするには、その設定ファイルが必要になるコントローラの中で次のメソッドを使います:

    $this->config->load('filename');

    ここでの filename は、ファイル拡張子の .php を除いたユーザ定義設定ファイルの名前になります。

    複数の設定ファイルを読み込む必要がある場合、通常は一つのマスタ設定配列に設定項目が展開されます。しかし、 別々の設定ファイルで、同じ名前の添字を使っていた場合は、名前の衝突が起こる可能性があります。衝突を避けるには、第2引数を TRUE に設定し、格納先の配列の添字でをそれぞれの設定ファイルを設定ファイルの名前にして、その中に設定を格納させます。例:

    // 次のような形で配列に保管されます: $this->config['blog_settings'] = $config
    $this->config->load('blog_settings', TRUE);

    上記の方法でセットした設定項目を読み取る方法については、下の 設定項目の取り出し というタイトルのセクションを見てください。

    第3引数で、設定ファイルが存在しなかった時に発生するエラーを出さないようにすることができます[ 訳注: TRUEに設定するとエラーがでなくなります。 ]:

    $this->config->load('blog_settings', FALSE, TRUE);
  2. 自動読み込み
  3. 特定の設定ファイルをグローバルに利用すべきことが分かった場合、システムでその設定を自動読み込みすることができます。これを実施するには、 application/config/autoload.php にある autoload.php ファイルを開き、そこに書いてある方法に従って、 設定ファイルを追加してください。

設定項目の取り出し

設定ファイルから設定項目を読み取るには、次のメソッドを使います:

$this->config->item('item name');

ここでの item name は、読み取りたい $config 配列の添字です。たとえば、選択した言語を取得するには次のようにします:

$lang = $this->config->item('language');

このメソッドは、読み取ろうとする項目が存在しない場合、FALSE (ブール値) を返します。

指定の添字に設定項目を代入するために、$this->config->load メソッドの第2引数を使った場合、 $this->config->item() メソッドの第2引数でも指定した添字の名前を設定することで、それを読み取ることができます。例:

// blog_settings.php というファイル名の設定ファイルをロードし、"blog_settings" というインデックスに代入します
$this->config->load('blog_settings', TRUE);

// blog_settings 配列にある site_name という設定項目を取得します
$site_name = $this->config->item('site_name', 'blog_settings');

// 同じ項目を指定する別の方法です:
$blog_config = $this->config->item('blog_settings');
$site_name = $blog_config['site_name'];

設定項目をセットする

動的に設定項目をセットしたり既存の設定を変更したりするには、下記のようなコードを使います:

$this->config->set_item('item_name', 'item_value');

ここでの item_name は、変更したい項目の $config 配列の添字で、 item_value はその値になります。

複数の環境

現状の環境により異なった設定ファイルをロードすることができます。 定数 ENVIRONMENT が index.php で定義されており、 複数の環境の取扱い のセクションに詳細が記述されて います。

環境固有の設定ファイルを作成するには、 application/config/{ENVIRONMENT}/{FILENAME}.php に設定ファイルを作成またはコピーします。

たとえば、本番環境での config.php を作成するには、以下のようにします:

  1. ディレクトリ application/config/production/ を作成します
  2. 既存の config.php を上記のディレクトリにコピーします
  3. application/config/production/config.php を編集し本番環境の設定を記述します

定数 ENVIRONMENT を 'production' に設定すると、, the settings 新しく作成した本番環境用の config.php がロードされます。

環境固有のフォルダに以下の設定ファイルを置くことができます:

Note: CodeIgniter は、現在の環境の設定ファイルを最初にロードしようと試みます。もし、ファイルが存在しなければ、グローバルの設定ファイル(すなわち、application/config/ にあるファイル)をロードします。これは、あなたは すべての 設定ファイルを環境固有のフォルダに置く必要はないこと、環境により変更するファイルだけを置けばよいことを意味します

ヘルパメソッド

設定クラスには、次のヘルパメソッドがあります:

$this->config->site_url();

このメソッドは、設定ファイルで、"index" の値に指定した、サイトへの URL を取得します。

$this->config->system_url();

このメソッドを使うと system フォルダ の URL を取得できます。