Symfoware

Symfowareについての考察blog

CodeIgniter 3 設定ファイルの読み込み(Library Reference - Config Class)

CodeIgniter User Guide

Library ReferenceのConfig Classについて調べてみます。
Config Class



Config Class



Configクラスは設定ファイルを読み込むクラスです。
デフォルトの設定ファイル(application/config/config.php)の他に、
独自の設定ファイルを読み込むことができます。

このクラスは自動的にロードされるので、ロードの指定は不要です。



Working with the Config Class



Configクラスの使い方を見てみます。



Anatomy of a Config File



CodeIgniterのデフォルトの設定ファイルはapplication/config/config.phpです。
テキストエディタでこのファイルを開いてみると、
$configというarrayに設定値が保存されていることがわかると思います。

独自の設定を追加したい場合、このconfig.phpに値を追記するか、
別のファイルに設定値を記載することができます。



Loading a Config File



デフォルトの「application/config/config.php」は自動的に読み込まれます。
別のファイルに設定を記載した場合は、手動で読み込む必要があります。



Manual Loading



手動で設定ファイルを読み込むには以下のようにします。


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




指定はファイル名だけで、「.php」という拡張子は不要です。


設定ファイルを読み込むと、一つの変数にマージされます。
このマージを回避したい場合は、第二引数にTRUEを指定します。


  1. // Stored in an array with this prototype: $this->config['blog_settings'] = $config
  2. $this->config->load('blog_settings', TRUE);





デフォルトで、存在しない設定ファイルを読み込もうとするとエラーになります。
ファイルが存在しなくてもエラーにしたくない場合は、第三引数にTRUEを指定します。


  1. $this->config->load('blog_settings', FALSE, TRUE);






Auto-loading



システム共通の設定ファイルなど、自動的にロードしてほしい設定ファイルがある場合、
application/config/autoload.php
に記載しておくと、自動的に読み込まれます。




Fetching Config Items



設定ファイルから値を読み取るには、itemメソッドを使用します。


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




例えば、「language」の設定値を読み取るには以下のようにします。


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




設定値が存在しない場合、メソッドはNULLを返します。
設定値読み取りのサンプルは以下のとおり。


  1. // Loads a config file named blog_settings.php and assigns it to an index named "blog_settings"
  2. $this->config->load('blog_settings', TRUE);
  3. // Retrieve a config item named site_name contained within the blog_settings array
  4. $site_name = $this->config->item('site_name', 'blog_settings');
  5. // An alternate way to specify the same item:
  6. $blog_config = $this->config->item('blog_settings');
  7. $site_name = $blog_config['site_name'];






Setting a Config Item



設定値の内容を上書きするにはset_itemメソッドを使用します。


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





Environments



ENVIRONMENTで指定した値により、設定値を変更したい場合があります。
ENVIRONMENTの指定方法はここで学びました。
開発環境、テスト環境、本番環境の切り替え(General Topics - Handling Multiple Environments)

ENVIRONMENTの設定値により設定内容を変更するには、
application/config/{ENVIRONMENT}/{FILENAME}.php
というファイルを作えいします。

例えば、productionだけで反映させたい設定がある場合

1.application/config/production/フォルダを作成
2.onfig.phpファイルを作成したフォルダにコピー
3.application/config/production/config.phpの設定値を編集


これで、productionの時だけ反映される設定ファイルが出来ました。




Class Reference



Configクラスのリファレンスです。



$config



設定値が保存される変数名です。



$is_loaded



ロードされた設定ファイルの名前の配列です。



item($item[, $index=''])



設定ファイルの値を取得します。


Parameters:    
$item (string) – Config item name
$index (string) – Index name

Returns:    
Config item value or NULL if not found

Return type:    
mixed





set_item($item, $value)



設定値を上書きします。


Parameters:    
$item (string) – Config item name
$value (string) – Config item value

Return type:    
void






slash_item($item)



取得する値の末尾に、スラッシュがなければスラッシュをつけて返します。


Parameters:
$item (string) – config item name

Returns:
Config item value with a trailing forward slash or NULL if not found

Return type:
mixed






load([$file = ''[, $use_sections = FALSE[, $fail_gracefully = FALSE]]])



指定された設定ファイルを読み込みます。


Parameters:    
$file (string) – Configuration file name
$use_sections (bool) – Whether config values shoud be loaded into their own section (index of the main config array)
$fail_gracefully (bool) – Whether to return FALSE or to display an error message

Returns:    
TRUE on success, FALSE on failure

Return type:    
bool





site_url()



サイトのURLを返します。
URLヘルパーのラッパーメソッドです。


Returns:
Site URL

Return type:
string





base_url()



起点となるURLを返します。
URLヘルパーのラッパーメソッドです。


Returns:
Base URL

Return type:
string






使ってみる



よくわからない箇所を抜粋して使ってみます。

まず、別の設定ファイルの読み込みから。
config.phpの末尾に一行追加します。


  1. $config['my_setting'] = 'defalut_config_setting';




test_config.phpを作成。
内容は以下のとおり。


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. $config['my_setting'] = 'test_config_setting';





適当にコントローラーを作成します。
単純に追加した設定値を表示。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         echo $this->config->item('my_setting');
  7.         
  8.     }
  9.     
  10. }




「defalut_config_setting」が表示されます。

545_01.png


自分で作った「test_config」を読み込むようにしてみます。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         $this->config->load('test_config');
  7.         
  8.         echo $this->config->item('my_setting');
  9.         
  10.     }
  11.     
  12. }




「test_config_setting」が表示されます。
設定値が上書きされましたね。

545_02.png


loadの第二引数にTRUEを指定してみます。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         $this->config->load('test_config', TRUE);
  7.         
  8.         echo $this->config->item('my_setting');
  9.         echo '<br>';
  10.         
  11.         // test_configの設定値の読み方
  12.         echo $this->config->item('my_setting', 'test_config');
  13.         echo '<br>';
  14.         
  15.         // こちらの方法でもOK
  16.         echo $this->config->item('test_config')['my_setting'];
  17.     }
  18.     
  19. }




上書きされなくなりましたね。

545_03.png



次に「ENVIRONMENT」の指定による変化を見てみます。

application/configに以下のディレクトリを作成。

/development
/testing
/production

それぞれにconfig.phpを配置します。

内容は以下のとおり。

・/development/config.php


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. $config['my_setting'] = 'development config';





・/testing/config.php


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. $config['my_setting'] = 'tesging config';





・/production/config.php


  1. <?php
  2. defined('BASEPATH') OR exit('No direct script access allowed');
  3. $config['my_setting'] = 'production config';





コントローラーの記載は以下の通り。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         echo $this->config->item('my_setting');
  7.     }
  8.     
  9. }




nginxの設定ファイルを変化させて、動作を見てみます。


fastcgi_param CI_ENV [development or tesging or production];




ちゃんと読み込む場所が切り替わっていますね。


545_04.png

545_05.png

545_06.png


開発、テスト、本番環境で接続するデータベースを切り替えたいとか、
そういう場合は便利に使える機能ですね。



CodeIgniter 3のユーザーガイド(User Guide)まとめ




関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/02/01(日) 15:10:18|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<CodeIgniter 3 データベースのマイグレーション(Library Reference - Migrations Class) | ホーム | CodeIgniter 3 カレンダークラスの使用方法(Library Reference - Calendaring Class)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1623-361fa9ee
この記事にトラックバックする(FC2ブログユーザー)