我正在计划做类似的事情,通过在.env.master中创建变量来指定在应用程序引导期间加载的env文件,例如ENV_VER = dev.env
这是因为我有几个分支,例如development,release-1.1等.因此,通过根据主env文件中指定的名称加载env文件,开发人员不再需要将新变量复制并粘贴到其本地副本中.相反,只需指定要在主env文件中加载的env文件的版本.顺便说一句,我有几个env文件,如dev.env,1.6.env等.
可能吗?
当然,我自己每次倾向于"弯曲"一个框架,但总有一种方法,但并不总是最好的解决方案.我不是在这里给出一个完整的实现,只是指向你的方向,这可能对你有用.
您可以扩展Laravel的基本应用程序类Illuminate\Foundation\Application,其中包含$environmentFile在应用程序引导期间加载的变量存储环境文件,或者可能覆盖函数loadEnvironmentFrom($file)或environmentFile().整个逻辑取决于你.
所以基本上你需要做的只是为了能够" .env加载"是...
创建一个扩展Laravel的新应用程序类:
namespace MyNamespace;
...
use Illuminate\Foundation\Application as App;
/**
* I'm doing alots of magic with .env in this class
*/
class Application extends App
{
...
/**
* The environment file to load during bootstrapping.
*
* @var string
*/
protected $environmentFile = '.env.main';
...
}
Run Code Online (Sandbox Code Playgroud)
现在,因为我们有一个新的bootstraping类,我们必须告诉Laravel我们想要使用它.因此,您必须bootstrap/app.php在创建新实例的位置修改文件:
...
$app = new MyNamespace\Application(
realpath(__DIR__.'/../')
);
...
Run Code Online (Sandbox Code Playgroud)
注意:为了灵感,我建议你真正看看Illuminate\Foundation\Application课程.
| 归档时间: |
|
| 查看次数: |
2375 次 |
| 最近记录: |