国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

新版webman,取消env的原因是什么?

evilk

新版的webman,沒有了env
1.取消的原因是什么?
2.取消后,如何區(qū)分 不同環(huán)境 的配置?

5040 2 2
2個回答

walkor 打賞

https://github.com/vlucas/phpdotenv/issues/410
https://github.com/walkor/webman/issues/200
主要是有用戶發(fā)現(xiàn) phpdotenv 在多線程環(huán)境下有bug。

另外的原因是想讓webman內核更精簡,只提供必要的 http協(xié)議解析、路由、中間件、日志等功能。
其他如數(shù)據(jù)庫、redis、包括phpdotenv等等其他功能由開發(fā)者決定是否安裝,以及安裝哪個。這樣的好處是可以更好復用php現(xiàn)有composer生態(tài),也能避免webman內核因為功能過多版本更新時產(chǎn)生較大變動導致無法向下兼容。

雖然webman去掉了phpdotenv,但是你仍然可以通過 composer require vlucas/phpdotenv 安裝它,
安裝后使用getenv() 函數(shù)就可以獲取配置了。

區(qū)分環(huán)境有多種方案,比如配置文件不提交到版本庫,版本庫里只提供exapmle.xxx.php的樣本配置文件。新項目根據(jù)樣本配置。這樣的好處是更新時不會因為環(huán)境導致配置沖突或者配置推送到錯誤的環(huán)境。

  • zeus 2021-11-16

    我們就是想根據(jù)配置的環(huán)境,比如dev|test|prod,來判斷取得對應環(huán)境的配置參數(shù),就可以了。還是希望官方能指定一個大家公用比較多的配置組件,謝謝大佬了。

admin

這是thinkphp的env的寫法,我改了下,可以用到webman里,而且$_ENV是二進制安全的,

<?php

namespace captain\webman;

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)
    {
        if(!is_file($file)){
            return;
        }
        $env = parse_ini_file($file, true);
        self::set($env);
    }

    /**
     * 獲取環(huán)境變量值
     * @access public
     * @param  string    $name 環(huán)境變量名
     * @param  mixed     $default  默認值
     */
    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;
    }

    /**
     * 設置環(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)] = $v;
                    }
                } else {
                    self::$data[$key] = $val;
                }
            }
        } else {
            $name = strtoupper(str_replace('.', '_', $env));
            self::$data[$name] = $value;
        }
    }
}

用法,支持數(shù)組標記(實際上會把 . 都轉換為_)

##############CORE##################
[app]
debug=1
#進程數(shù)量
count=1
server_addr=http://0.0.0.0:8080
session_drive=file

Env::get('app.count',cpu_count() * 2)

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??