# PHP工具类

# 全局函数

# modstart_version MSCore版本

获取MSCore版本

modstart_version( )

  • 返回:string 版本号

# modstart_admin_url Admin路径

生成Admin的路径,自动加前缀

modstart_admin_url( string, array )

  • 参数:string $url 路径
  • 参数:array $param 参数
  • 返回:string

代码示例

// 返回 /admin/aaa/bbb
modstart_admin_url('aaa/bbb')
// 返回 /admin/aaa/bbb?x=y
modstart_admin_url('aaa/bbb',['x'=>'y'])
1
2
3
4

# modstart_web_full_url 生成完整的Web路径

modstart_web_full_url( string, array )

  • 参数:string $url 路径
  • 参数:array $param 参数
  • 返回:string 地址

代码示例

// 返回 http://www.example.com/aaa/bbb
modstart_web_full_url('aaa/bbb')
// 返回 http://www.example.com/aaa/bbb?x=y
modstart_web_full_url('aaa/bbb',['x'=>'y'])
1
2
3
4

# modstart_web_url Web路径

生成Web的路径,自动加前缀

modstart_web_url( string, array )

  • 参数:string $url 路径
  • 参数:array $param 参数
  • 返回:string 地址

代码示例

// 返回 /aaa/bbb
modstart_web_url('aaa/bbb')
// 返回 /aaa/bbb?x=y
modstart_web_url('aaa/bbb',['x'=>'y'])
1
2
3
4

# modstart_api_url Api路径

生成Api的路径,自动加前缀

modstart_api_url( string, array )

  • 参数:string $url 路径
  • 参数:array $param 参数
  • 返回:string

代码示例

// 返回 /api/aaa/bbb
modstart_api_url('aaa/bbb')
// 返回 /api/aaa/bbb?x=y
modstart_api_url('aaa/bbb',['x'=>'y'])
1
2
3
4

# modstart_configs 获取多个配置中第一个非空值

modstart_configs( $keys, $default )

  • 参数:$keys array 多个配置名
  • 参数:$default string 默认值
  • 返回:void array|bool|int|mixed|\ModStart\Core\Config\MConfig|string

# modstart_config 获取配置

用于获取表 config 中的配置选项

modstart_config( $key, $default, $useCache )

  • 参数:$key string 配置名称
  • 参数:$default string|array|boolean|integer 默认值,不能为 null
  • 参数:$useCache boolean 启用缓存,默认为true
  • 返回:string|array|boolean|integer|\ModStart\Core\Config\MConfig 返回配置值或配置对象

代码示例

// 网站名称
modstart_config('siteName','[默认名称]');
// 获取一个配置数组,数组需存储成 json 格式
modstart_config()->getArray('xxx')
// 设置配置项
modstart_config()->set('xxx','aaa')
1
2
3
4
5
6

# modstart_config_asset_url 获取配置资源路径

modstart_config_asset_url( $key, $default )

  • 参数:$key string 配置名称
  • 参数:$default string 默认值
  • 返回:string

# modstart_module_enabled 模块判断

判断模块是否已安装并启用

modstart_module_enabled( $module, $version )

  • 参数:$module string 模块名称,如 Member
  • 参数:$version string 模块版本要求,如 1.0.0, >=1.0.0
  • 返回:boolean 模块是否安装并启用

代码示例

// 模块Member是否安装并启用
modstart_module_enabled('Member')
// 模块Member是否安装了 >=1.2.0 的版本
modstart_module_enabled('Member','>=1.2.0')
1
2
3
4

# LM 多语言(模块)

LM( $module, $name, ...$params )

  • 参数:$module string 模块名称
  • 参数:$name string 多语言
  • 参数:...$params string|int 多语言参数
  • 返回:string 多语言翻译

代码示例

// 获取模块Member的多语言
LM('Member','Message')
// 获取模块Member的多语言,带参数
LM('Member','File Size Limit %s','10M')
1
2
3
4

# L 多语言

获取多语言翻译

L( $name, ...$params )

  • 参数:$name string 多语言
  • 参数:...$params string|int 多语言参数
  • 返回:string 多语言翻译

代码示例

// 返回 消息
L('Message');
// 返回 文件最大为10M
L('File Size Limit %s','10M');
1
2
3
4

# 数据库 ModelUtil

# model 构建模型

ModelUtil::model( $model )

  • 参数:$model string 数据表
  • 返回:Model|Builder 数据库模型

代码示例

// 查询
ModelUtil::model('user')->where(['id'=>1])->get()->toArray();
ModelUtil::model('user')->where('id','>',5)->get()->toArray();
// 查询-like
ModelUtil::model('user')->where('username','like','%keywords%')->get()->toArray();
// 查询-limit
ModelUtil::model('user')->limit(5)->get()->toArray();
// 查询-原生SQL
ModelUtil::model('user')->whereRaw(DB::raw('id > 0 OR id is null'))->get()->toArray();

// 删除
ModelUtil::model('user')->where(['id'=>1])->delete();

// 更新
ModelUtil::model('user')->where(['id'=>1])->update(['username'=>'aaa']);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# insert 插入数据

ModelUtil::insert( $model, $data )

  • 参数:$model string 数据表
  • 参数:$data array 数据数组
  • 返回:array 插入的数据记录

代码示例

ModelUtil::insert('user',['username'=>'aaa','nickname'=>'bbb']);
1

# insertAll 插入多条数据

ModelUtil::insertAll( $model, $datas, $updateTimestamp )

  • 参数:$model string 数据表
  • 参数:$datas array 多条数据数组
  • 参数:$updateTimestamp boolean 是否更新时间戳,默认为true
  • 返回:void

代码示例

ModelUtil::insertAll('user',[ ['username'=>'aaa','nickname'=>'bbb'], ['username'=>'ccc','nickname'=>'ddd'] ]);
1

# delete 删除记录

ModelUtil::delete( $model, $where )

  • 参数:$model string 数据表
  • 参数:$where array|int 条件数组或数据ID
  • 返回:integer 被删除的记录数量

代码示例

// 删除ID为1的用户
ModelUtil::delete('user',1);
// 删除用户名为aaa的用户
ModelUtil::delete('user',['username'=>'aaa']);
1
2
3
4

# get 获取单条记录

ModelUtil::get( $model, $where, $fields, $order )

  • 参数:$model string 数据表
  • 参数:$where int|array 条件
  • 参数:$fields array 数据表字段
  • 参数:$order array 排序,如 ['id','asc']
  • 返回:array|null 数据记录

代码示例

ModelUtil::get('user',1);
ModelUtil::get('user',['username'=>'xxx']);
更复杂的数据获取可以使用 ModelUtil::model('xxx') 进行操作
1
2
3

# 客户端 AgentUtil

# getUserAgent 获取浏览器UserAgent

AgentUtil::getUserAgent( )

  • 返回:string

# device 判断浏览器类型

AgentUtil::device( )

  • 返回:string pc, mobile

# isWechat 判断是否是微信浏览器

AgentUtil::isWechat( )

  • 返回:boolean

# isMobile 判断是否是手机浏览器

AgentUtil::isMobile( )

  • 返回:boolean

# isPC 判断是否是电脑浏览器

AgentUtil::isPC( )

  • 返回:boolean

# detectRobot 获取机器人类型

AgentUtil::detectRobot( $userAgent )

  • 参数:$userAgent string|null 浏览器UserAgent,为空时自动获取
  • 返回:string|null 机器人名称,非机器人时返回null

# 事件操作 EventUtil

# fire 触发一个Laravel事件,兼容了不同版本

EventUtil::fire( $event )

  • 参数:$event object
  • 返回:void

# 文件 FileUtil

# mime 根据文件后缀获取MIME类型字符串

FileUtil::mime( $ext )

  • 参数:$ext string 文件后缀
  • 返回:string|null

# mimeToExt 根据MIME类型字符串获取文件后缀

FileUtil::mimeToExt( $mime )

  • 参数:$mime string MIME类型字符串
  • 返回:string|null

# write 写入文件

FileUtil::write( $path, $content )

  • 参数:$path string
  • 参数:$content string
  • 返回:boolean 是否写入成功

# extension 获取文件后缀

FileUtil::extension( $pathname )

  • 参数:$pathname string 文件路径
  • 返回:string

# listAllFiles 递归列出目录所有文件

FileUtil::listAllFiles( $dir, $filter )

  • 参数:$dir string 目录
  • 参数:$filter Closure 过滤器,为空表示不过滤
  • 返回:array

# listFiles 列出目录所有文件

FileUtil::listFiles( $filename, $pattern )

  • 参数:$filename string
  • 参数:$pattern string 后缀过滤,如 *.txt *.php 等
  • 返回:array

# formatByte 格式化字节

FileUtil::formatByte( $bytes, $decimals )

  • 参数:$bytes integer 字节数
  • 参数:$decimals integer 小数最多保留位数,默认为2
  • 返回:string

代码示例

// 返回 1 MB
FileUtil::formatByte(1024*1024)
// 返回 1.5 GB
FileUtil::formatByte(1024*1024*1024*1.5)
1
2
3
4

# formatByteSimple 格式化字节(简化)

FileUtil::formatByteSimple( $bytes, $decimals )

  • 参数:$bytes integer 字节数
  • 参数:$decimals integer 小数最多保留位数,默认为2
  • 返回:string

代码示例

// 返回 1 M
FileUtil::formatByte(1024*1024)
// 返回 1.5 G
FileUtil::formatByte(1024*1024*1024*1.5)
1
2
3
4

# formattedSizeToBytes 格式化的文件大小转换为字节

FileUtil::formattedSizeToBytes( $sizeString )

  • 参数:$sizeString string 如 1M
  • 返回:integer

# copy 复制目录

FileUtil::copy( $src, $dst, $replaceExt, $callback, $filter )

  • 参数:$src string 源路径,必须给出,不能为空
  • 参数:$dst string 源路径,必须给出,不能为空
  • 参数:$replaceExt string|null 如果文件存在需要添加的后缀名,作为备份使用,如果不传表示不备份
  • 参数:$callback Closure|null 复制回调
  • 参数:$filter Closure|null 复制过滤器
  • 返回:null 注意:src 和 dst 如果是文件,需同时是文件,如果是目录,需同时是目录

# rm 删除目录

FileUtil::rm( $dir, $removeSelf )

  • 参数:$dir string 目录
  • 参数:$removeSelf boolean 是否删除本身
  • 返回:boolean

# ID生成 IdUtil

# generate 带前缀的ID

一般用于页面渲染时页面元素唯一ID

IdUtil::generate( string )

  • 参数:string $group
  • 返回:string 生成的ID字符串

代码示例

// 将生成 Aaa_1 Aaa_2 Aaa_3
IdUtil::generate('Aaa')
1
2

# next64BitId 获取64位ID

IdUtil::next64BitId( )

  • 返回:string ID字符串

# generateSN 生成订单号

一个19位长的(BigInteger)

IdUtil::generateSN( )

  • 返回:string

代码示例

// 生成 20210101010101+12121
IdUtil::generateSN()
1
2

# 分页渲染工具 PageHtmlUtil

# nextPageUrl 渲染下一页分页链接

PageHtmlUtil::nextPageUrl( $total, $pageSize, $currentPage, $url )

  • 参数:$total integer 总记录数
  • 参数:$pageSize integer 每页记录数
  • 参数:$currentPage integer 当前页
  • 参数:$url string 分页链接,页码使用 {page} 占位
  • 返回:void

# prevPageUrl 渲染上一页分页链接

PageHtmlUtil::prevPageUrl( $total, $pageSize, $currentPage, $url )

  • 参数:$total integer 总记录数
  • 参数:$pageSize integer 每页记录数
  • 参数:$currentPage integer 当前页
  • 参数:$url string 分页链接,页码使用 {page} 占位
  • 返回:void

# render 渲染分页工具

PageHtmlUtil::render( $total, $pageSize, $currentPage, $url, $template )

  • 参数:$total integer 总记录数
  • 参数:$pageSize integer 每页记录数
  • 参数:$currentPage integer 当前页
  • 参数:$url string 分页链接,页码使用 {page} 占位
  • 参数:$template string 模板
  • 返回:void

# 二维码 QrcodeUtil

# png 生成二维码

生成PNG格式的二维码图片

QrcodeUtil::png( $content, $size )

  • 参数:$content string 二维码内容
  • 参数:$size integer 大小,默认200
  • 返回:string 图片二进制串

# pngBase64String 生成二维码

生成二维码Base64串

QrcodeUtil::pngBase64String( $content, $size )

  • 参数:$content string 二维码内容
  • 参数:$size integer 大小,默认200
  • 返回:string 二维码Base64字符串

代码示例

// 返回 data:image/png;base64,xxxxxxxx
QrcodeUtil::pngBase64String('http://www.xxx.com')
1
2

# 随机字符串 RandomUtil

# number 随机数字

RandomUtil::number( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# string 随机字符串

RandomUtil::string( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# readableString 随机可读字符串

去掉0、O等相似字符

RandomUtil::readableString( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# lowerReadableString 随机可读字符串(小写)

RandomUtil::lowerReadableString( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# upperReadableString 随机可读字符串(大写)

RandomUtil::upperReadableString( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# hexString 随机Hex字符串

RandomUtil::hexString( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# lowerString 随机小写字符串

RandomUtil::lowerString( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# lowerChar 随机小写字符串

只包含字母

RandomUtil::lowerChar( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# upperChar 随机大写字符串

只包含字母

RandomUtil::upperChar( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# upperString 随机大写字符串

RandomUtil::upperString( $length )

  • 参数:$length integer 长度
  • 返回:string 字符串

# uuid 随机UUID

使用年月日构造

RandomUtil::uuid( )

  • 返回:string UUID

# percent 随机概率

RandomUtil::percent( $value )

  • 参数:$value integer 概率值
  • 返回:boolean 是否成功

# 字符串处理 StrUtil

# mbLimit 按照UTF8编码裁减字符串(汉字和英文都占1个宽度)

StrUtil::mbLimit( $text, $limit )

  • 参数:$text string 待裁剪字符串
  • 参数:$limit integer 裁剪长度
  • 返回:string

# mbLimitChars 按照UTF8编码裁减字符串(汉字占3个宽度、英文都占1个宽度)

StrUtil::mbLimitChars( $text, $limit )

  • 参数:$text string 待裁剪字符串
  • 参数:$limit integer 裁剪长度
  • 返回:void

# mbLength 计算UTF8字符串宽度(汉字和英文都占1个宽度)

StrUtil::mbLength( $text )

  • 参数:$text string
  • 返回:integer

# wordSplit 中文分词,如果未安装分词模块,则使用正则表达式分词

StrUtil::wordSplit( $content )

  • 参数:$content string 分词的内容
  • 返回:array 分词结果

# Tree工具 TreeUtil

# itemsMergeLevel 为列表增加 _level 属性

TreeUtil::itemsMergeLevel( $items, $idName, $pidName, $sortName, $pid )

  • 参数:$items array|Collection 数据记录
  • 参数:$idName string ID字段名,默认为 id
  • 参数:$pidName string 父级ID字段名,默认为 pid
  • 参数:$sortName string 排序字段名,默认为 sort
  • 参数:$pid int|string 父级ID,默认为 0
  • 返回:Collection 返回带有 _level 属性的集合
Last Updated: 4 months ago