1. pugtech1

    No comment

    pugtech1
Changes in body
Source | HTML | Preview
@@ -1,54 +1,58 @@
こんにちわ。パグです。備忘録です。
---
FuelPHP のTaskから呼んだクラス内で ENV指定したConfigが取れない時がありました。
具体的にいうと、Function run(){}の中からさらにStaticClassを呼んでたんだけど
その中で取得しようとしてるConfig::get()がapp/config直下のものしか取れなくて、
ENVで指定したdb.phpを取得できてないというもの。
以下はFuelPHP1.8の環境で試しました。
FUELPHPのタスクは
```
env FUEL_ENV=ENVName php oil r [taskname]
```
で呼び出しますが、タスクの中にさらにStaticのクラスとかが呼ばれていて
```
function run(){
$return = \Func_Class::static($value);
}
Func_Class::staticの中では
Config::get("db.xxx");
```
Func_Classのなかでみているのはapp/config配下のdb.phpのようです。
でも私はapp/ENV/db.phpを呼び出したい・・・。
そんな時はTask内で上書きしてしまいましょう。
```
-\Config::load('db','db');
+function run(){
+   \Config::load('db','db');←これを追加する
+ $return = \Func_Class::static($value);
+}
+
```
ConfigLoadをすると、TaskでSetEnvしたENV配下のConfigが取得できるので、
dbという名前で上書きします。
以降は
```
function run(){
$return = \Func_Class::static($value);
}
Func_Class::staticの中では
Config::get("db.xxx");
```
こんな感じで呼び出せば、指定ENV配下のConfigが取得できるようになります。
なんか細かくみてないけど
Fuel/Taskって NameSpaceが違うから、Fuel\Coreで普通に呼び出せる
意識しないで取得できる Overwriteとかがされてないみたいなんだよね。
通常のOrmModelとかの方はちゃんとSetEnvできてるんだけど。
というわけで困った人はお試しください。
ではまたの。