fuelphp 独自で定数を指定

define()したい。

作成日:2019-11-10, 更新日:2020-01-09

各環境共通でdefine()したい

あくまでもサンプル。

▼「app\config\define.php」を作成

<?php
define('HOGE_001', '〇〇〇');
define('HOGE_002', '〇〇〇');

▼「app\bootstrap.php」に追記

~ 省略 ~
\Fuel::$env = \Arr::get($_SERVER, 'FUEL_ENV', \Arr::get($_ENV, 'FUEL_ENV', getenv('FUEL_ENV') ?: \Fuel::DEVELOPMENT));

require APPPATH . '/config/define.php';

// Initialize the framework with the config file.
\Fuel::init('config.php');

各環境ごとにdefine()したい

ファイルをあちこちに作るってのが好きじゃないので私はやらないが・・・こういう方法もある。

・「app\config\define.php」を「app\config\test\define.php」や「app\config\staging\define.php」などに移す
・「require APPPATH . '/config/define.php';」を「require APPPATH . '/config/'.\Fuel::$env.'/define.php';」
※「\Fuel::$env」を小文字に変換してあげたほうが良いかも。

コントローラーから設定する

・各コントローラーの「before()」などでdefine()をする。
→「if ( !defined(〇〇〇) ) {}」で定義済みかチェックする必要はアリ

環境によって書き換える

・基本、本番環境の値を使う
・本番環境じゃなく、各環境用の値があるなら、各環境の値で上書き

ファイルと流れ

・「app\bootstrap.php」は上記と同じ設定(「require APPPATH . '/config/define.php';」を追記)
・必須】config/define.php
・必須】config/production/define.php
・任意】config/development/define.php(test、stagingなども)

▼処理の流れ
1.「config/define.php」で「config/production/define.php」を呼び出す
2.環境によって「config/development/define.php」を呼び出す
3.「1」「2」を合体して「define()」

サンプル

▼config/define.php

<?php
\Config::load('production/define', 'production_define');

$add_seed = null;
$add_define = strtolower(\Fuel::$env);
if ( $add_define != 'production' ) {
  \Config::load($add_define.'/define', 'add_define');
  $add_seed = \Config::get('add_define');
}

if ( $add_seed == null ) {
  $add_seed = array();
}

$seed = array_merge(\Config::get('production_define'), $add_seed);

if ( is_array($seed) ) {
  foreach ( $seed as $k=>$v) {
    if ( !defined($k) ) {
      define($k, $v);
    }
  }
}

▼config/production/define.php

<?php
return array(
  '〇キー1〇' => '〇値〇',
  '〇キー2〇' => '〇値〇',
  '〇キー3〇' => '〇値〇',
);

▼config/development/define.php(test、stagingなども)

<?php
return array(
  '〇キー2〇' => '〇値〇',
);

※環境によって書き換えたい値のみ設定。不要ならファイル自体不要