| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * 环境变量
- *
- * @author mybsdc <[email protected]>
- * @date 2019/6/2
- * @time 17:28
- */
- namespace Luolongfei\Libs;
- use Dotenv\Dotenv;
- class Env extends Base
- {
- /**
- * @var array 环境变量值
- */
- protected $allValues = [];
- public function init($filename = '.env', $overload = true)
- {
- if (file_exists(ROOT_PATH . DS . $filename)) {
- $this->setAllValues($filename, $overload);
- } else { // 云函数或 Heroku 或 Railway 直接从 .env.example 读取默认环境变量
- $this->setAllValues('.env.example', $overload);
- }
- }
- /**
- * 读取并设置所有环境变量
- *
- * @param $filename
- * @param $overload
- *
- * @return void
- */
- private function setAllValues($filename, $overload)
- {
- $this->allValues = $overload ? Dotenv::create(ROOT_PATH, $filename)->overload() : Dotenv::create(ROOT_PATH, $filename)->load();
- }
- /**
- * 获取环境变量
- *
- * @param $key
- * @param $default
- *
- * @return array|bool|mixed|string|null
- */
- public function get($key = '', $default = null)
- {
- if (!strlen($key)) { // 不传 key 则返回所有环境变量
- return $this->allValues;
- }
- $value = getenv($key);
- if ($value === false) {
- return $default;
- }
- switch (strtolower($value)) {
- case 'true':
- case '(true)':
- return true;
- case 'false':
- case '(false)':
- return false;
- case 'empty':
- case '(empty)':
- return '';
- case 'null':
- case '(null)':
- return null;
- }
- if (($valueLength = strlen($value)) > 1 && $value[0] === '"' && $value[$valueLength - 1] === '"') { // 去除双引号
- return substr($value, 1, -1);
- }
- return $value;
- }
- }
|