置顶沉梦云全新生态系统诚招开发者

为了打造更全面的商城,提供更全面更优质成本更低的全新商城管理系统为大众服务,于2021年启动了全新商城开发计划,目前商城客户端程序和控制端已经完备,于2023年2月10日推出了采用thinkphp6+workerman+vue2开发的沉梦云Pro,接着在同年9月12日推出了采用thinkphp6+workerman+vue+vite开发的沉梦云SUP权益实物系统,版本和功能更完善,深度开发适配的插件系统,支持各种复杂功能实现,帮助客户有更多选择的同时,还能给各大开发者带来收益

【thinkphp】一个自用的.env环境变量动态配置php函数

由于各种问题,动态配置环境变量不一定好使,于是写了个~    /**     * 动态配置.env环境变量     *     * @param string $key 变量名 支持组     * @param string $value 变量值     * @return void     */    public function setEnv(string $key = '', string $value = '') {        $file = root_path() . '.env';        $data = '';        if (is_file($file)) {            $data = trim(file_get_contents($file));        }        if ($data == '') {            // 没有内容就直接创建            $data = <<<Env           APP_DEBUG = false           [APP]           DEFAULT_TIMEZONE = Asia/Shanghai           [DATABASE]           TYPE = mysql           HOSTNAME =           HOSTPORT = 3306           USERNAME =           PASSWORD =           DATABASE =           PREFIX =            CHARSET = utf8           DEBUG = true           [LANG]           default_lang = zh-cn           [REDIS]           REDIS_HOSTNAME =           PORT = 6379           REDIS_PASSWORD =           SELECT = 0           [QUEUE]           QUEUE_NAME =Env;        }        // 修改配置        $key = strtoupper($key);        if (strpos($key, '.')) {            $arr   = explode('.', $key, 2);            $key1  = $arr[0];            $key2  = $arr[1];            $start = mb_strpos($data, '[' . $key1 . ']');            if ($start !== false) {                // 找到配置组                $str_up    = mb_substr($data, 0, $start);                $str_lower = mb_substr($data, $start);                if (preg_match('/' . $key2 . '  =/', $str_lower)) {                    // 找到就直接替换                    $str_lower = preg_replace('/(\n' . $key2 . '  =(.*)|\n' . $key2 . '  =)/', "\n" . $key2 . '  =  ' . $value, $str_lower);                    $data      = $str_up . $str_lower;                } else {                    // 未找到直接在组下面追加                    $str_q     = '/\[' . $key1 . '\]/';                    $str_h     = "\[" . $key1 . "\]\n" . $key2 . "  =  " . $value;                    $str_lower = preg_replace($str_q, $str_h, $str_lower);                    $data      = $str_up . $str_lower;                }            } else {                // 未找到配置组 追加                $data = $data . "\n[" . $key1 . "]\n" . $key2 . "  =  " . $value;            }        } else {            // 说明是顶层配置            if (preg_match('/' . $key . '  =/', $data)) {                // 直接替换数据                $data = preg_replace('/([\n]{0,1}' . $key . '  =  (.*)|[\n]{0,1}' . $key . '  =)/', "\n" . $key . '  =  ' . $value, $data);            } else {                // 追加                $data = $key . "  =  " . $value . "\n" . $data;            }        }        file_put_contents($file, $data);    }

目录[+]