当前位置: 首页 > 后端技术 > PHP

从bin-swoft入手,阅读Swoft框架源码(三)--EnvProcessor

时间:2023-03-29 22:27:48 PHP

Swoft\Processor\EnvProcessor是应用程序运行后调用的第一个处理器。handle方法代码:publicfunctionhandle():bool{if(!$this->application->beforeEnv()){CLog::warning('StopenvprocessorbybeforeEnvreturnfalse');返回假;}//根据env文件的别名获取env文件的真实路径$envFile=Swoft::getAlias($this->application->getEnvFile());//修复:在phar包中,删除phar://前缀if(IN_PHAR){$envFile=Str::rmPharPrefix($envFile);}//如果env文件不存在,控制台会打印警告信息if(!file_exists($envFile)){CLog::warning('Envfile(%s)isnotexist!skiploadit',$环境文件);返回$this->application->afterEnv();}//加载env信息//这里使用的是vlucas包//vlucas的官方图片是这样描述这个包的://Loadsenvironmentvariablesfrom`.env`to`getenv()`,`$_ENV`and`$_SERVER`自动。//翻译过来就是自动将.env文件中的内容加载到php的//$_ENV和$_SERVER中,可以使用getenv()函数获取内容//Loadenvinfo$factory=newDotenvFactory([新的EnvConstAdapter,新的PutenvAdapter,新的ServerConstAdapter]);$path=目录名($envFile);$name=basename($envFile);Dotenv::create($path,$name,$factory)->overload();//打印加载完成信息CLog::info('Envfile(%s)isloaded',$envFile);return$this->application->afterEnv();}总结:这个处理器做的事情很简单:调用第三方包将.env文件中的配置加载到php中,以便后续程序通过获取配置信息getenv()方法。