如何读取?如何保存?这是重点
如何读取
逐行正则匹配,一次不能多行。且只能定义bool/string类型。
getenv:
laravel的env是通过该函数获取env环境变量
那么存储呢?使用了Dotenv包
加载如下:Dotenv\Loader类下:
/**
* Load `.env` file in given directory.
*
* @return array
*/
public function load()
{
$this->ensureFileIsReadable();
$filePath = $this->filePath;
$lines = $this->readLinesFromFile($filePath);
foreach ($lines as $line) {
if (!$this->isComment($line) && $this->looksLikeSetter($line)) {
$this->setEnvironmentVariable($line);
}
}
return $lines;
}
说明加载env文件效率比较低。
顺着getEnvironmentVariable往下:
public function setEnvironmentVariable($name, $value = null)
{
// 这里就是解析了
list($name, $value) = $this->normaliseEnvironmentVariable($name, $value);
// Don't overwrite existing environment variables if we're immutable
// Ruby's dotenv does this with `ENV[key] ||= value`.
if ($this->immutable && $this->getEnvironmentVariable($name) !== null) {
return;
}
// If PHP is running as an Apache module and an existing
// Apache environment variable exists, overwrite it
if (function_exi