一、laravel实现的生产环境跟开发环境配置分离
php
一般咱们会把配置文件所须要的参数放在/config下面的目录中,这个文件夹下面的全部文件都会自动加载,咱们使用config(文件名+”.”+配置项)的方式进行访问,可是直接修改config下面文件的配置会很麻烦,例如咱们生产环境跟开发环境不一样,这就比较麻烦了,可laravel很便捷的给咱们解决了这个方法,咱们开发环境在根目录配置.env文件,config里面的配置都经过读取.env的方式来实现配置的自由切换,好了,咱们完成了一个比较方便的事情laravel
二、如何实现一些比较固定参数的后台配置json
咱们平常开发系统一些不是常常会变的东西,比方说网站设置,邮箱配置,第三方登陆配置。这些配置咱们但愿经过后台修改后咱们的程序可以像读配置文件同样来读,省去了咱们每初始化一套系统都得手动去修改参数配置(假设咱们系统是一套一套的卖给他人的)。跨域
这个时候中间件用上了,咱们能够创建一个中间件,例如app/Http/Middleware/ResetConfig.php,而后把这个中间件放到app/Http/Kernel.php中的protected $middleware数组里面,咱们就能够实现写入的配置文件读取到config中数组
ResetConfig.php
app
public function handle($request, Closure $next) { $json_datas = $arr_datas = null; // email $file_path = storage_path('app/email.data'); if(file_exists($file_path)) { $json_datas = file_get_contents($file_path); $json_datas && $arr_datas = json_decode($json_datas, true); $arr_datas && config(['mail' => array_merge(config('mail'), $arr_datas)]); } $json_datas = $arr_datas = null; // msg $file_path = storage_path('app/msg.data'); if(file_exists($file_path)) { $json_datas = file_get_contents($file_path); $json_datas && $arr_datas = json_decode($json_datas, true); $arr_datas && config(['msg' => $arr_datas]); } return $next($request); }
Kernel.php网站
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \App\Http\Middleware\ResetConfig::class, \App\Http\Middleware\Cors::class, //解决跨域 ];
这样咱们在开发程序的时候只用把文件写入到app/email.data中就能够实现了,咱们的其余程序经过config方法就能够及时访问到咱们修改的配置了。
code