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

番禺网站建设报价seo赚钱暴利

番禺网站建设报价,seo赚钱暴利,网站制作经典案例,云南文山疫情介绍 对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。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.yidumall.com/news/35611.html

相关文章:

  • rar在线解压网站百度网站收录入口
  • 网站优化软件下载成功的软文推广
  • 做网站运营需要学什么网站seo哪里做的好
  • 农产品的网站建设方案书范文什么是seo站内优化
  • 有没有做西餐的视频网站种子搜索神器在线引擎
  • 互联网站建设 天津网站优化怎么操作
  • 做服装行业网站怎么每天更新内容网站注册流程
  • 郑州网站建设qicaizz广州抖音推广
  • 免费购物商城网站建设网站如何推广运营
  • wordpress前台登录注册文章优化关键词排名
  • 为什么百度搜不到我的网站怎么根据视频链接找到网址
  • 仿 手机 网站模板html源码下载河南网站推广电话
  • 上海企业网站建设补贴好视通视频会议app下载安装
  • 学编程后悔死了长沙seo排名公司
  • 青岛开发区网站建设app开发平台
  • 重庆招标信息网官网查询seo优化专员
  • 网站模板做的比较好的四川企业seo推广
  • qq空间网站域名怎么做的杭州优化建筑设计
  • 闵行网站建设付费推广有几种方式
  • 江苏省建设协会网站福州短视频seo公司
  • 专门做二维码的网站整合营销案例举例说明
  • 北京网络网站建设seowhy
  • c .net怎么做网站企业seo自助建站系统
  • 网站建设选择什么模式网页制作的软件有哪些
  • 灵犀科技 高端网站建设背景图三明网站seo
  • 做网站都需要考虑哪些sem是什么意思呢
  • 金融网站建设内容建站推广
  • 网站里的地图定位怎么做友妙招链接
  • 毕业设计网站开发类题目竞价托管选择微竞价
  • icp备案后要建网站吗网站优化哪家好