当前位置: 首页 > news >正文

金泉网做网站电话创建公司多少钱

金泉网做网站电话,创建公司多少钱,建设部中国建设工程信息网,长沙做企业网站的公司介绍 对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。当应用程序收到请求时,.env 文件中列出的所有变量将被加载到 PHP 的超级全局变量 $_ENV 中。 使…

介绍

对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。Laravel 利用 Vance Lucas 的 PHP 库 DotEnv 使得此项功能的实现变得非常简单。当应用程序收到请求时,.env 文件中列出的所有变量将被加载到 PHP 的超级全局变量 $_ENV 中。

使用

你可以使用 env 函数检索这些变量的值。事实上,如果你查看 Laravel 的配置文件,你就能注意到有数个选项已经使用了这个函数:

'debug' => env('APP_DEBUG', false),

传递给 env 函数的第二个值是「默认值」。如果给定的键不存在环境变量,则会使用该值。

使用分析

我们可以先看一下助手函数 env

if (! function_exists('env')) {/*** Gets the value of an environment variable.** @param  string  $key* @param  mixed  $default* @return mixed*/function env($key, $default = null){return Env::get($key, $default);}
}

ENV::get 最终追踪到 EnvConstAdapter get

    /*** Get an environment variable, if it exists.** @param string $name** @return \PhpOption\Option*/public function get($name){if (array_key_exists($name, $_ENV)) {return Some::create($_ENV[$name]);}return None::create();}

读取$_ENV内容,$_ENV是 通过环境提供给脚本的变量

/*** @xglobal $_ENV array** Variables provided to the script via the environment.* Analogous to the old $HTTP_ENV_VARS array (which is still available, but deprecated).** <p><a href="https://secure.php.net/manual/en/reserved.variables.php">* https://secure.php.net/manual/en/reserved.variables.php</a>*/
$_ENV = array();

写入$_ENV

bootstrap/app.php中

    try {(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(dirname(__DIR__)))->bootstrap();} catch (Dotenv\Exception\InvalidPathException $e) {//}

Laravel\Lumen\Bootstrap\LoadEnvironmentVariables 中

<?phpnamespace Laravel\Lumen\Bootstrap;use Dotenv\Dotenv;
use Dotenv\Exception\InvalidFileException;
use Illuminate\Support\Env;
use Symfony\Component\Console\Output\ConsoleOutput;class LoadEnvironmentVariables
{/*** The directory containing the environment file.** @var string*/protected $filePath;/*** The name of the environment file.** @var string|null*/protected $fileName;/*** Create a new loads environment variables instance.** @param  string  $path* @param  string|null  $name* @return void*/public function __construct($path, $name = null){$this->filePath = $path;$this->fileName = $name;}/*** Setup the environment variables.** If no environment file exists, we continue silently.** @return void*/public function bootstrap(){try {$this->createDotenv()->safeLoad();} catch (InvalidFileException $e) {$this->writeErrorAndDie(['The environment file is invalid!',$e->getMessage(),]);}}/*** Create a Dotenv instance.** @return \Dotenv\Dotenv*/protected function createDotenv(){return Dotenv::create($this->filePath,$this->fileName,Env::getFactory());}/*** Write the error information to the screen and exit.** @param  string[]  $errors* @return void*/protected function writeErrorAndDie(array $errors){$output = (new ConsoleOutput)->getErrorOutput();foreach ($errors as $error) {$output->writeln($error);}die(1);}
}

我们可以看到 bootstrap方法是创建Dotenv实例,并且调用Dotenv实例的safeload方法,Dotenv::create参数的含义

   $this->filePath, #env所在目录$this->fileName, #env名称,默认 .envEnv::getFactory() #laravel env相关的适配器工厂

由此我们可以自定义.env的位置和名称

safeload方法

    /*** Load environment file in given directory.** @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException** @return array<string|null>*/public function load(){return $this->loadData();}/*** Load environment file in given directory, silently failing if it doesn't exist.** @throws \Dotenv\Exception\InvalidFileException** @return array<string|null>*/public function safeLoad(){try {return $this->loadData();} catch (InvalidPathException $e) {// suppressing exceptionreturn [];}}/*** Load environment file in given directory.** @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException** @return array<string|null>*/public function overload(){return $this->loadData(true);}/*** Actually load the data.** @param bool $overload** @throws \Dotenv\Exception\InvalidPathException|\Dotenv\Exception\InvalidFileException** @return array<string|null>*/protected function loadData($overload = false){return $this->loader->setImmutable(!$overload)->load();}

根据代码分析,safeLoad 中使用了 try {} catuch {} 捕获了异常,不会因为地址错误而报错,同时加载loadData,这里默认使用了loadData = true, 影响的Dotenv 创建的 DotenvVariables(array $adapters, $immutable)实例属性 $immutable值。我们通过追踪load方法,最终可以找到该方法:

    /*** Set an environment variable.** @param string      $name* @param string|null $value** @throws \InvalidArgumentException** @return void*/public function set($name, $value = null){if (!is_string($name)) {throw new InvalidArgumentException('Expected name to be a string.');}// Don't overwrite existing environment variables if we're immutable// Ruby's dotenv does this with `ENV[key] ||= value`.if ($this->isImmutable() && $this->get($name) !== null && $this->loaded->get($name)->isEmpty()) {return;}$this->setInternal($name, $value);$this->loaded->set($name, '');}

此时我们明白,如果$immutable = true的话,如果之前环境变量有了该值,后面的配置文件无法进行更改环境变量的值,如果没有该值进行添加

http://www.yayakq.cn/news/759362/

相关文章:

  • wordpress一键关注网站seo优化价格
  • 做视频的软件模板下载网站有哪些内容营销型网站建设托管
  • 公司建网站怎么弄电商平面ui设计是什么
  • html动漫网站模板下载wordpress 分享代码
  • 手机版网站模板 免费怎么做二十八页美食网站
  • 热点新闻事件及评论成都网站关键词优化
  • 安徽六安旅游必去十大景点天津百度快速优化排名
  • wordpress建站心得工程资质
  • 查询网站开发网站开发有哪些软件有哪些
  • 网站建设需要多少费用手表网站 云
  • 建网站选域名网站建设价格方案
  • 中国摄影网站十大排名国际新闻最新消息10条
  • wordpress搬站江津哪里找做网站的
  • 乐云网站建设南宁企业免费建站
  • 衡水网站建设优化排名江西公共资源交易网
  • 什么网站可以做调察问卷怎样去推广自己的网店
  • 商业网站建设定位wordpress可选模式主题
  • 网约车平台app网站建设阿里巴巴官网首页下载
  • 免费网络在线打电话企业网站优化包括哪三个层面
  • 微网站建设图片试用网站 建站
  • 专门做产品排名的网站泉州建站模板
  • 肇庆新农村建设内容在哪个网站做男装去哪个网站好
  • 垂直电商网站开发免费下载百度
  • 做本地团购网站怎么样广东企业微信网站建设
  • 重庆公司专业建站wordpress新建相册页面
  • 网站cms传奇 网页游戏排行榜
  • 1688成品网站源码陕西住房和城乡建设部网站首页
  • 门户网站登录入口最权威的做网站设计哪家好
  • 重庆网站建设如何福利的网页游戏
  • 网站优化无限关键词设置wordpress怎么配置文件