Help us understand the problem. What is going on with this article?

FuelPHP のTaskから呼んだクラス内で ENV指定したConfigが取れない時

こんにちわ。パグです。備忘録です。


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内で上書きしてしまいましょう。

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できてるんだけど。

というわけで困った人はお試しください。

ではまたの。

pugtech1
コアテックに所属して7年目のお局 特技は3秒で寝ること
https://core-tech.jp/blog/employee_id7/
core-tech
100%自社内で月間数千万PVのWebサービスを受託開発する安定&成長企業
https://core-tech.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした