欢迎来到vitphp
首页
使用手册
安装教程
开发文档
应用市场
演示站
更新日志
用户协议
入门指引
关于我们
框架介绍
安装运行
免责声明
应用开发
创建应用
应用开发
模板开发
应用目录
config.xml
VitPhp框架
目录结构
数据库字典
全局变量
控制器
类库
域名绑定路由
函数
系统权限管理
前端使用
html默认绑定事件
标签
Workerman
微信公众号
网页授权
微信支付
微信小程序
UniApp
应用市场
绑定云服务
应用在线更新
小程序前端上传
商品管理
用户相关
订单相关
函数
### 常用函数 框架封装了一些后台常用函数,方便开发者使用 ------------ ##### jsonErrCode ------ 结束程序并输出json类型的错误信息 调用后会结束php的运行,并输出json类型数组 - 参数 | 参数 | 备注 | | ---- | ---------------- | | msg | 要输出的文字信息 | - 示例 ```php jsonErrCode('出错啦'); // 返回{"code":0,"msg":"出错啦"} ``` ------------ ##### jsonSucCode ------ 结束程序并输出json类型的成功信息 调用后会结束php的运行,并输出json类型数组 - 参数 | 参数 | 备注 | | ---- | ---------------- | | msg | 要输出的文字信息 | - 示例 ```php jsonSucCode('成功啦'); // {"code":1,"msg":"成功啦"} ``` ------------ ##### xml2array ------ 将xml字符串转为数组 - 参数 | 参数 | 备注 | | ---- | ------------- | | xml | xml类型字符串 | - 示例 ```php xml2array ('
张三
'); // 返回["name" => "张三"] ``` ------------ ##### ToUrl ------ 生成携带pid的地址,方便开发者在开发时需要拼接pid的问题 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ------ | -------- | -------------- | | path | string | 是 | path类型的地址 | | params | array | 否 | url参数 | - 示例 ```php ToUrl('index/index/index') // 返回 /index/index/index.html?pid=1& ToUrl('index/index/index', ['a'=>1,'b'=>2]) // 返回 /index/index/index.html?pid=1&a=1&b=2 ``` ------------ ##### getip ------ 获取访问用户的IP地址 - 示例 ```php getip() // 返回ip地址 ``` ------------ ##### createQrcode ------ 生成二维码 调用后会在浏览器中输出图片二维码流,可以直接显示 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ---- | ------ | -------- | -------------- | | url | string | 是 | 二维码携带的内容 | | level| string | 否 | 二维码容错率 | | size | string | 否 | 二维码大小 | | margin| string | 否 | 二维码白边大小 | - 示例 ```php createQrcode('这是内容或Url'); ``` ------------ ##### setSetting ------ 向系统配置表中添加/修改数据 此方法操作`vit_settings`表,若传入name值存在则修改,不存在则会添加 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ------ | -------- | --------------------------------- | | name | string | 是 | 操作的名称 | | value | string | 否 | 操作的值 | | addons | string | 否 | 操作的类型,默认为setup,用于分类 | - 示例 ```php setSetting('title', 'hellp vitphp'); // 操作表中addons为setup,name为title的,将值改为hellp vitphp setSetting('title', 'hellp vitphp', 'mainset'); // 操作表中addons为mainset,name为title的,将值改为hellp vitphp ``` ------------ ##### getSetting ------ 向系统配置表中添加/修改数据 获取表`vit_settings`表中的值,框架对此方法进行了优化,并**不会每次调用都会走数据库**,可放心多次调用 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ------ | -------- | ------------------------------------------- | | name | string | 是 | 获取的名称,对应表中name字段 | | addons | string | 否 | 操作的类型,默认为setup,对应表中addons字段 | - 示例 ```php getSetting('xieyi'); // 获取默认系统配置中xieyi的信息 getSetting('name', 'mainset'); // 获取系统公告名称 ``` ------------ ##### redom ------ 生成随机字符串 生成随机字符串,内置五种生成范围,可满足绝大部分使用场景 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ---- | -------- | ------------------------------------------------------------ | | length | int | 是 | 生成字符串的长度 | | type | int | 否 | 生成字符串内容的组成范围,详情见下方 | | ├─ 0 | - | - | ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz | | ├─ 1 | - | - | ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 | | ├─ 2 | - | - | abcdefghijklmnopqrstuvwxyz0123456789 | | ├─ 3 | - | - | 0123456789 | | ├─ 4 | - | - | abcdefghijklmnopqrstuvwxyz | | └─ 5 | - | - | ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()_+~? | - 示例 ```php redom(); // 生成8位随机小写字母+大写字母+数字 redom(6, 3); // 生成6位验证码,如 017976 redom(16, 2); // 生成16位随机小写字母 // 其他皆可根据type值决定 ``` ------------ ##### media ------ 根据文件名,获取文件的访问链接 框架封装的图片上传、文件上传、音频上传、视频上传保存在库中都是不包含域名的,但是上传方法有可能是本地也有可能是其他远程,所以需要调用此方法来获取文件的可访问url地址 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------- | ------ | -------- | ---------------------- | | fileUrl | int | 是 | 文件名称 | | storage | string | 否 | 指定远程方式,默认为空 | | domain | string | 否 | 指定远程域名,默认为空 | - 示例 ```php $fileUrl = '/upload/1/images/2021/05/18/71/a0471110e69cdfda096b938b52a0cb0c8fd8a5.png'; $src = media($fileUrl); // 返回这里是本地路径,所以返回的也是本地路径 // /upload/1/images/2021/05/18/71/a0471110e69cdfda096b938b52a0cb0c8fd8a5.png $fileUrl = '/75/images/2022/01/23/202201231645607409.jpg'; $src = media($fileUrl, 'act'); // act是指使用系统当前指定的远程方式 // 这里传的是非本地路径,系统自动判定后会自动拼接上配置的域名 // http://oss.qidudu.cn/75/images/2022/01/23/202201231645607409.jpg ``` ##### get_full_media_url ------ 获取文件的http访问地址 一般在做微信分享或者在小程序中使用的时候,都必须要求图片是可在http访问的,如果是本地文件,不能只传本地路径,如:`upload/1/images/2021/05/18/71/a0471110e69cdfda096b938b52a0cb0c8fd8a5.png` 这个就不能使用,必须转成带http或https协议的 由此就产生了此方法,如果是本地文件,框架会根据当前访问的协议自动拼接http或https - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ----- | ------ | -------- | -------- | | media | string | 是 | 文件名称 | - 示例 ```php $fileUrl = '/upload/1/images/2021/05/18/71/a0471110e69cdfda096b938b52a0cb0c8fd8a5.png'; $src = get_full_media_url($fileUrl); // 返回这里是带http或https的地址 // http://www.vit.com/upload/1/images/2021/05/18/71/a0471110e69cdfda096b938b52a0cb0c8fd8a5.png ------------ ##### is_appdue ------ 判断当前项目是否到期 框架根据传入的项目pid值,判断当前项目是否到期,开发者可根据结果进行一定的操作 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ---- | ---- | -------- | ------ | | pid | int | 是 | 项目id | - 示例 ```php $pid = 1; $isAppdue = is_appdue($pid); if($isAppdue){ // 过期了 }else{ // 没过期 } ``` ------------ ##### is_admin ------ 判断当前用户是否为当前应用的管理员 - 示例 ```php $isAdmin = is_admin(); if($isAdmin){ // 是管理员 }else{ // 不是管理员 } ``` ------------ ##### app_dqtime ------ 查询当前项目的到期时间,若未到期则返回到期时间,若已到期则返回“已过期” - 示例 ```php $appDqTime = app_dqtime(); // 2022-01-01 00:00:00 // 或 已过期 ``` ------------ ##### pass_en ------ 生成密码 众所周知,md5加密彩虹库越来越庞大,使用md5的方式越来越不让人放心,所以框架封装了此方法,用于生成不可逆的字符串,可用于生成密码 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ---- | ------ | -------- | ------------ | | pass | string | 是 | 要加密的内容 | - 示例 ```php $password = 123456; $password = pass_en($password); // 这里不会返回固定值,会根据配置文件中的密钥不同而生成不同的字符串 ``` ------------ ##### pass_compare ------ 校验密码 用来校验由`pass_en`生成的密码是否正确 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ---- | ------ | -------- | ----------------- | | pass | string | 是 | 待校验的明文密码 | | hash | string | 是 | pass_en生成的密码 | - 示例 ```php $oldPassword = 'xxxxxxx'; $passwrod = 123456; $flag = pass_compare($password, $oldPassword); // 正确返回true,不正确返回false ``` ------------ ##### uniqidDate ------ 根据日期生成唯一编码,可用于生成订单号 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ------ | -------- | ------------------ | | size | int | 否 | 生成长度,默认16位 | | prefix | string | 否 | 设置前缀,默认为空 | - 示例 ```php uniqidDate(); // 生成16位唯一编码 // 2022030926238226 uniqidDate(16, 'vit_') // 生成带前缀的16位唯一编码 // vit_202203092639 ``` ------------ ##### auth ------ 权限校验 传入节点地址,判断当前用户是否有此节点校验 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ---- | ------ | -------- | -------- | | path | string | 是 | 节点地址 | - 示例 ```php $authFlag = auth('index/order/detail'); if($authFlag){ // 当前用户有此节点权限 }else{ // 当前用户有没此节点权限 } ``` 也放在html中,用于指定权限显示按钮或信息 ```html {if auth('index/index/index')}
有权限显示这
{else/}
没有权限显示这
{/if} ``` ------------ ##### get_array_val ------ 获取数组中某键的值 给一个数组,可根据多级键值获取内容,防止报未定义数组下标的错,可在php中使用,也可在视图模板中使用 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ------ | -------- | ---------------- | | array | array | 是 | 数组元素 | | key | string | 是 | 要获取的键值组合 | | detail | 任意 | 否 | 默认空 | - 示例 ```php $array = [ 'user' => [ 'name' => 'vitphp' ] ]; $userName = get_array_val($array, 'user.name'); // 返回vitphp $userAddress = get_array_val($arratm, 'user.address'); // 返回 '' $userAge = get_array_val($arratm, 'user.age', 18); // 返回 18 ``` 也可在视图模板中使用,简化代码 ```html
用户名称:{:get_array_val($array, 'user.name')}
``` ------------ ##### down_file ------ 下载远程文件到本地 - 参数 | 参数 | 类型 | 是否必须 | 备注 | | -------- | ------ | -------- | -------------------------------------- | | url | string | 是 | 要下载的远程地址 | | saveDir | string | 是 | 要保存的位置 | | filename | string | 否 | 下载的文件名称,可为空,框架会自动生成 | - 示例 ```php $src = 'http://tp.05v.cn/app/cs_addons/images/logo.jpg'; $downFile = down_file($src, root_path()); // [ // "name" => "logo.jpg", // "path" => "/www/wwwroot/thinkphp/", // "file" => "/www/wwwroot/thinkphp/logo.jpg" // ] ``` ------------ ##### sql_parse ------ 分割sql文件中的sql语句 将从数据库中导出的.sql文件中的字符串,分割成一句一句的可执行语句,返回的是一个数组,数组中每个子元素都是可执行的sql - 参数 | 参数 | 类型 | 是否必须 | 备注 | | ---- | ------ | -------- | --------- | | sqls | string | 是 | sql字符串 | - 示例 ```php $sqlString = <<
"SET NAMES utf8mb4" 1 => "SET FOREIGN_KEY_CHECKS = 0" 2 => "DROP TABLE IF EXISTS `vit_mz_shop_goods_copy1`" 3 => """ CREATE TABLE `vit_mz_shop_goods_copy1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '1', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 35 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact """ 4 => "INSERT INTO `vit_mz_shop_goods_copy1` VALUES (1, '商品1')" 5 => "INSERT INTO `vit_mz_shop_goods_copy1` VALUES (2, '商品2')" 6 => "INSERT INTO `vit_mz_shop_goods_copy1` VALUES (3, '商品3')" 7 => "SET FOREIGN_KEY_CHECKS = 1;" ] ``` ------------ ##### vit_session ------ session操作 此框架为多应用框架,若不处理应用标示,直接使用tp6自带的session的话会产生session的污染等一系列问题,若框架在此封装了一下session方法,会在内部添加应用标做以区分。 使用方法与session函数一致 - 参数 与Tp6的session()函数使用方法一致 - 示例 ```php vit_session('wechat'); // 获取session ``` ------------ ##### vit_cache ------ cache操作 此框架为多应用框架,若不处理应用标示,直接使用tp6自带的cache的话会产生cache的污染等一系列问题,若框架在此封装了一下cache方法,会在内部添加应用标做以区分。 使用方法与cache函数一致 - 参数 与Tp6的cache()函数使用方法一致 - 示例 ```php vit_cache('userInfo') // 获取用户缓存 ``` ------------ ##### app_http_request ------ 发送http或https请求 - 参数参数 | 参数 | 类型 | 是否必须 | 备注 | | ------ | ------------ | -------- | ------------------------------------------------------ | | url | string | 是 | 要请求地址 | | data | array\|null | 否 | 要携带的body参数 | | header | array | 否 | 请求头 | | extra | array | 否 | 额外的信息,用于扩展curl参数 | | isJson | boolean | 否 | 默认false,是否设定请求头为json信息 | | method | string\|null | 否 | 请求类型,如post或get,一般存在data则为post,否则为get | - 示例 ```php $result = app_http_request($url); // 这是get $result = app_http_request($url, []); // 这是post // 有时候框架封装的请求中curl参数使用不全,开发者可在第4个参数中自行扩展 // 数组的key为curl的第2个参数,数组的value为curl的第3个参数 ``` ------------ ##### borrow_wechat_auth ------ 处理微信借权操作 在index模块index控制器index方法中必须调用 ,用于处理别人借用本框架授权域名 - 参数参数 空 - 示例 ```php borrow_wechat_auth(); // 直接调用即可 ``` ------------ ##### json_str_to_array ------ 将json格式字符串转为数组 若字段存的是json字符串,则可调用此方法,要判断字符是否可转为数组,可以则返回数组,否则返回[] - 参数参数 | 参数 | 类型 | 是否必须 | 备注 | | ------- | ------------ | -------- | -------------- | | json | string\|null | 是 | 要转换的字符串 | | default | 任意 | 否 | 默认返回空数组 | - 示例 ```php $json = "{\"name\":\"张三\",\"age\":18}"; $arr = json_str_to_array($jsonString); // 返回如下格式 array:2 [ "name" => "张三" "age" => 18 ] // 若转的字符串不可解析为数组,则会返回默认值 $json = "{\"nsdfgsdfgsdfg"; $arr = json_str_to_array($jsonString, []); // 这里会返回空数组 ``` ------------ ##### save_sys_log ------ 操作日志,操作`vit_sys_log`表 将当前操作的节点、信息存数据库 - 参数参数 | 参数 | 类型 | 是否必须 | 备注 | | ----------- | ------------ | -------- | ------------------------------ | | authText | string | 是 | 操作行为 | | description | string\|null | 否 | 操作描述 | | userName | string\|null | 否 | 用户名,不传则会获取登录用户名 | - 示例 ```php save_sys_log('修改文章分类', "文章分类ID:{$id}", session('admin.username')); ``` ------------ ##### vit_platform ------ 保存平台配置,数据库表:`vit_platform` 可在当前项目下保存微信公众号、小程序公众号、微信微信、快手、安卓、IOS、抖音、百度小程序、支付宝小程序、系统模应用、web应用、其他应用配置信息 - 参数参数 | 参数 | 类型 | 是否必须 | 备注 | | -------- | ------ | -------- | -------------------------------- | | params | array | 是 | 要保存的数据 | | platform | string | 否 | 默念为wechat,保存微信公众号配置 | platform值可为:`wechat`,`wxapp`,`workwechat`,`ksapp`,`androidapp`,`iosapp`,`dyapp`,`bdapp`,`alpayapp`,`template`,`web`,`other` - 示例 ```php $params = [ 'name' => input('name'), 'appid' => input('appid'), 'appsecret' => input('appsecret'), 'mchid' => input('mchid'), 'paykey' => input('paykey'), 'authdomain' => input('authdomain') ]; vit_platform($params); // 保存微信公众号配置 // 若参数为空数组,则会清掉已保存的数据 ``` ------------ ## 判断访问设备 ##### isMobile() ###### 判断是否为移动设备 ------ ##### isIOS() ###### 判断是否为苹果 ------ ##### isAndroid() ###### 判断是否为安卓 ------ ##### isWechat() ###### 判断是否为微信端 ------ ##### isAlipayClient() ###### 判断是否为支付宝 ------ ## 应用数据查询 VitDb() 每个应用在查询数据库时会多写应用名称比较麻烦,特意在1.6.4版本新增VitDb()查询 当在demo应用下时使用`VitDb('user')->where('id',1)`和`DB::name('demo_user')->where('id',1)`一致 默认拼接应用名+下划线,这样可以少写应用名