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

为了打造更全面的商城,提供更全面更优质成本更低的全新商城管理系统为大众服务,于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);    }

【vue开发】开发UI库&插件汇总

一、UI组件及框架element-饿了么出品的Vue2的webUI工具套件mint-ui-Vue2的移动UI元素iview-基于Vuejs的开源UI组件库Keen-UI-轻量级的基本UI组件合集vue-material-通过VueMaterial和Vue2建立精美的app应用muse-ui-三端样式一致的响应式UI库vuetify-为移动而生的VueJS2组件框架

【php扩展】thinkphp防火墙插件web防火墙一键安装即用

说明这里为大家带来一款自用的web防火墙,全开源,可放心使用至于为什么要写一个,无非就是现在遵循psr规范自动加载的项目越多越多,同时包括现有项目或者以后的项目,针对防御方面的轮子都比较少现在有了这个,一键安装即用,省心省力,岂不美哉#安装命令如下 注意,需要在服务器命令行的项目下执行cd "自己的项目路径"composer require chenm/websafe附录觉得好用麻烦点个Star哦gitee传送门:https://g

【vscode插件php篇】国人开发php必装效率神器插件推荐

欲先善其事,必先利其器,想要拥有一个高效的开发条件,那么拥有一个好的开发工具和环境是有必要的!!有了下面这些插件,想必会让你bug少了,效率高了,头发也掉的少了!1.函数注释生成插件#可一键生成 支持自动检测函数参数,智能检测数据类型和返回数据类型#使用方法:函数上面一行 敲下/**再回车php docbloker

【php杂谈】php如何解决函数引用传参不能为空,使用函数回调和global关键词

php 函数调用有一个引用传参的功能,所谓引用的意思就是你传过来的实参到函数里面,在这个函数里面通过代码改变了这个参数的值,然后这个外部实参的值也会跟着变(变量的内存地址是同一个),这就叫引用传参!但是呢,函数引用参数有一个缺点,就是不能默认为空,也就是调用函数的时候这个引用参数不能省略!那么如何解决这个方法,我们就可以用到回调函数!!经初步测试,php5.6及以上是支持的,其他版本未测试!下面直接上代码

【vue2】vue css样式篇之组件样式不生效?使用穿透样式即可

是不是很奇怪,部分写好的绑定样式运行后发现没生效!!然后打开控制台发现标签根本没有找到对应的类样式由于vue内部的打包机制原因,这个问题需要涉及到一个知识点,那就是“穿透样式”穿透样式是什么我们就不bb了,直接上代码你就懂了穿透样式有三种写法,都是在需要作为穿透样式的样式类前面加上特定的字符即可由于vue和vue-loader等组件的版本兼容性不一样,写法也就不一样,主要就下面三种

目录[+]