GatewayWorker框架下 怎么能引用.env 配置文件呢
看了下webman有 但是沒(méi)找到GatewayWorker的
參考:thinkphp6的env
/app/Env.php
<?php
namespace app;
class Env
{
/**
* 環(huán)境變量數(shù)據(jù)
* @var array
*/
protected static $data = [];
/**
* 讀取環(huán)境變量定義文件
* @access public
* @param string $file 環(huán)境變量定義文件
* @return void
*/
public static function load($file)
{
self::set($_ENV);
if(!is_file($file)){
return;
}
$env = parse_ini_file($file, true);
self::set($env);
self::set(\getenv());
}
/**
* 獲取環(huán)境變量值
* @access public
* @param string $name 環(huán)境變量名
* @param mixed $default 默認(rèn)值
*/
public static function get($name=null, $default = null)
{
if($name==null){
return self::$data;
}
$name=strtoupper($name);
$name = strtoupper(str_replace('.', '_', $name));
if (isset(self::$data[$name])) {
return self::$data[$name];
}
return $default;
}
/**
* 設(shè)置環(huán)境變量值
* @access public
* @param string|array $env 環(huán)境變量
* @param mixed $value 值
* @return void
*/
public static function set($env, $value = null)
{
if (is_array($env)) {
$env = array_change_key_case($env, CASE_UPPER);
foreach ($env as $key => $val) {
if (is_array($val)) {
foreach ($val as $k => $v) {
self::$data[$key . '_' . strtoupper($k)] = trim($v);
}
} else {
self::$data[$key] = trim($val);
}
}
} else {
$name = strtoupper(str_replace('.', '_', $env));
self::$data[$name] = trim($value);
}
}
}
/start.php
<?php
use Workerman\Worker;
ini_set('display_errors', 'on');
require_once __DIR__ . '/vendor/autoload.php';
if (method_exists(\app\Env::class, 'load')) {
$loadfile=file_exists(__DIR__.DIRECTORY_SEPARATOR.'dev.env')?'dev.env':'.env';
\app\Env::load($loadfile);
}
如何使用?
讀取env的 的某個(gè)字段
App_SecretKey=123456
// bussinessWorker 進(jìn)程
$worker = new BusinessWorker();
$worker->secretKey = Env::get('App.SecretKey', null);
自己搞個(gè)包或者自己寫一個(gè)
$envPath = '.env';
if(!file_exists($envPath))throw new \Exception("env is not set.");global $_ENV;$_ENV=parse_ini_file($envPath);function env($name) {global $_ENV;return isset($_ENV[$name]) ? $_ENV[$name] : null;}
var_dump(env('xxx'));