助手函数篇
游鹄君2026年9月21日大约 9 分钟phpopensourcephplaravel-fast-api-youhujun
助手函数分为三部分,一部分伴随组件包发布安装位于config\help.php中,这里面的助手函数紧密依赖业务,可以理解为是跟随业务需要拓展的.可以自行查看,并且拓展维护,
另一部分是组件包内置的,组件包也可分为两部分,一个部分是不依赖于laravel框架的通用助手函数,位于php-tool-youhujun组件包中,这里面都是通用的函数,可以直接使用,
另一个部分是依赖于laravel框架的助手函数,位于laravel-fast-api-youhujun组件包中(src\config\目录下)
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
http_get($url, $headers = []) | $url: 请求地址
$headers: 请求头数组 | 响应字符串/失败false | CURL 发送 GET 请求 |
http_post($url, $headers = [], $data = null) | $url: 请求地址
$headers: 请求头
$data: 提交数据 | 响应字符串/失败false | CURL 发送 POST 请求 |
http_put($url, $headers = [], $data = null) | $url: 请求地址
$headers: 请求头
$data: 提交数据 | 响应字符串/失败false | CURL 发送 PUT 请求 |
http_delete($url, $headers = [], $data = null) | $url: 请求地址
$headers: 请求头
$data: 提交数据 | 响应字符串/失败false | CURL 发送 DELETE 请求 |
http_head($url, $headers = []) | $url: 请求地址
$headers: 请求头 | 响应头字符串 | CURL 发送 HEAD 请求 |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
p(mixed $param) | $param: 任意类型数据 | 无返回值 | 格式化打印数据调试 |
f(mixed $param, int $type = 0) | $param: 字符串/数组
$type: 0转义/1去标签 | 过滤后内容 | 过滤HTML标签/转义实体(数组递归处理) |
code(?array $code = null, ?array $add = null) | $code: 返回码数组
$add: 附加数据 | 合并后数组 | 接口返回数据合并 |
init_number_code() | 无参数 | 4位数字字符串 | 生成短信验证码 |
mask_string(string $dataString, int $prefixLen = 3, int $suffixLen = 4) | $dataString: 待处理字符串
$prefixLen: 前缀保留长度
$suffixLen: 后缀保留长度 | 脱敏后字符串 | UTF-8按字符脱敏(中间以*填充) |
get_now_date_time() | 无参数 | 时间字符串 | 获取当前时间(Y-m-d H:i:s) |
get_show_amount(int $amount) | $amount: 金额(分) | 金额字符串 | 分转元显示金额(bcdiv保留2位) |
get_cascader_array(array $cascader_id_array = []) | $cascader_id_array: 级联数组 | 一维ID数组 | 级联数组转一维去重数组(兼容一维) |
is_serialized(mixed $data) | $data: 待检测数据 | true/false | 判断是否为PHP序列化数据 |
array_level(array $arr) | $arr: 数组 | 维度数字 | 计算数组最大维度 |
total(mixed $arr, array &$levels, int $level = 0) | $arr: 数据
$levels: 层级数组(引用)
$level: 当前层级 | 无返回值 | 递归计算数组维度(辅助) |
to_array(mixed $array) | $array: 数组 | 处理后数组 | 数组元素转为单元素数组(非数组返回空数组) |
check_id(mixed $id) | $id: 待验证ID | 有效ID/0 | 验证ID是否为纯数字(有效转整型返回,无效返回0) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
es_check_data_exist(string $esIndexName, string $keyField, mixed $keyValue, ?string $whereKeyField = null, mixed $whereKeyValue = null) | $esIndexName: ES索引名称
$keyField: 查找字段
$keyValue: 查找值(支持数组批量)
$whereKeyField: 附加条件字段(可选)
$whereKeyValue: 附加条件值(可选,支持数组) | true/false | ES检测数据是否存在(附加条件时校验全部命中;$keyValue为数组时要求全部存在才返回true) |
make_hash_pass(string $originString) | $originString: 原始字符串 | 哈希字符串 | 加盐SHA256哈希加密(盐值取config common.hash.salt) |
get_mask_by_cipher(string $cipher, int $start = 1, int $end = 0) | $cipher: AES密文
$start: 脱敏开始位置(默认1)
$end: 脱敏结束位置(默认0) | mask掩码字符串 | 根据加密密文获取掩码(AES解密后做字符串脱敏,原文长度<3时末位不掩码) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_shard_config_key() | 无参数 | 配置键字符串 | 获取当前微服务配置键(youhu/xuehu/youhushop/youhujun) |
get_machine_id() | 无参数 | 机器ID字符串 | 获取雪花算法机器ID(按微服务配置) |
get_snow_flake_id() | 无参数 | 雪花ID整型 | 生成全局唯一雪花ID |
get_shard_table_count() | 无参数 | 分表数量整型 | 获取分库分表分表数量 |
get_shard_cache_db() | 无参数 | 缓存库号整型 | 获取分库分表缓存数据库号(默认3) |
get_shard_cache_prefix() | 无参数 | 缓存前缀字符串 | 获取分库分表缓存前缀 |
get_shard_cache_enable() | 无参数 | 布尔值 | 获取分库分表缓存启用状态 |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_system_user_account_name() | 无参数 | 账号名称数组 | 获取系统内置账号名称数组(develop/super/admin/user) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_cover_album_picture_uid() | 无参数 | 图片UID字符串 | 获取系统默认封面相册图片UID(Redis缓存+ES回源) |
get_avatar_album_picture_uid() | 无参数 | 图片UID字符串 | 获取系统默认头像相册图片UID(Redis缓存+ES回源) |
get_system_album_uid() | 无参数 | 相册UID字符串 | 获取系统默认相册UID(Redis缓存+ES回源,找不到抛异常) |
get_admin_album_uid(string|int $admin_uid) | $admin_uid: 管理员UID | 相册UID字符串 | 获取管理员默认相册UID(Redis缓存+ES回源) |
get_user_album_uid(string|int $user_uid) | $user_uid: 用户UID | 相册UID字符串 | 获取用户默认相册UID(Redis缓存+ES回源) |
get_album_picture_url(string $picture_uid) | $picture_uid: 相册图片雪花ID | 图片URL字符串 | 获取相册图片URL(picture_type=10本地storage,否则云端URL) |
两套函数(get_user_openid / get_user_wechat_openid 系)共用同一份 Redis 缓存(common_redis 配置,HASH user_openid:user_openid / user_unionid:user_unionid,field 为 user_openid-{uid} / user_unionid-{uid}),任一函数写入的缓存另一函数可直接命中。
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_user_openid(string|int $user_uid) | $user_uid: 用户UID | openid字符串 | 获取用户微信openid(Redis缓存+ES回源,查不到抛异常) |
get_user_unionid(string|int $user_uid) | $user_uid: 用户UID | unionid字符串 | 获取用户微信unionid(Redis缓存+ES回源,查不到抛异常) |
get_user_wechat_openid(string $user_uid) | $user_uid: 用户UID | openid字符串 | 获取用户微信openid(Redis→ES→DB 三级降级查询,查不到返回空串) |
get_user_wechat_unionid(string $user_uid) | $user_uid: 用户UID | unionid字符串 | 获取用户微信unionid(Redis→ES→DB 三级降级查询,查不到返回空串) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_user_level(string|int $user_uid) | $user_uid: 用户UID | 级别名称字符串 | 获取用户等级名称(Redis缓存+ES双索引查询users→user_levels,无级别返回"暂无级别") |
get_es_user_roles(string|int $user_uid, int $type = 0) | $user_uid: 用户UID
$type: 角色类型(默认0不过滤) | 角色名称数组 | 获取ES中用户关联角色名称(user_role_unions→roles两段查询) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_all_regions() | 无参数 | 地区Collection集合 | 获取全部地区(Redis缓存+ES回源,serialize存储) |
get_region_name_array(array $region_id_array) | $region_id_array: 省市区ID数组 | 名称数组 | 根据ID数组获取省市区名称数组(ES查询) |
get_goods_class_name_array(array $goods_class_id_array) | $goods_class_id_array: 商品分类ID数组 | 名称数组 | 根据ID数组获取商品分类名称数组(ES查询) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_single_cascader_id_array(Collection $mapCollection, object $dataObject) | $mapCollection: 以id为键的映射集合
$dataObject: 当前数据对象 | id数组 | 递归向上收集父级,获取单个级联数组需要的id数组 |
get_all_children_collection(Collection $parentMapCollection, object $dataObject) | $parentMapCollection: 以parent_id为键的父级映射集合
$dataObject: 当前数据对象 | 子级Collection集合 | 递归向下收集,获取所有子级集合 |
get_default_shop_role_cascader_id_array() | 无参数 | 级联id二维数组 | 获取默认店铺角色级联id数组(order_admin→admin→shop三条角色链,ES查询) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_admin_shop_uid(string $admin_uid) | $admin_uid: 管理员UID | 店铺UID字符串 | 获取管理员关联店铺UID(ES查询,无店铺返回"0") |
get_user_shop_uid(string $user_uid) | $user_uid: 用户UID | 店铺UID字符串 | 获取用户关联店铺UID(ES查询,无店铺返回"0") |
get_system_shop_uid() | 无参数 | 店铺UID字符串 | 获取系统店铺UID(develop用户的店铺,ES两段查询,查不到抛异常) |
位于组件包 src\config\ 目录,随 ServiceProvider 自动加载。
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
get_admin_roles(Admin $adminObject) | $adminObject: 管理员模型对象 | 角色逻辑名称数组 | 获取管理员角色列表(Redis+ES缓存) |
get_user_roles(User $userObject) | $userObject: 用户模型对象 | 角色逻辑名称数组 | 获取用户角色列表(Redis+ES缓存) |
is_develop(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为开发者角色 |
is_super(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为超级管理员 |
is_admin(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为管理员 |
is_config_admin(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为配置管理员 |
is_album_admin(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为相册管理员 |
is_order_admin(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为订单管理员 |
is_article_admin(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否为文章管理员 |
is_user(Admin $adminObject) | $adminObject: 管理员模型对象 | true/false | 判断是否包含用户角色 |
is_phone_user(User $userObject) | $userObject: 用户模型对象 | true/false | 判断是否为手机端普通用户 |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
plog(mixed $data, string $typeDir = 'common', string $logFileName = 'common') | $data: 日志数据
$typeDir: 日志分类目录
$logFileName: 日志文件名(不含扩展名) | 写入字节数/false | 自定义日志写入文件(storage/logs/custom/{typeDir}/Y-m-d/,JSON格式,目录竞态安全) |
convert_to_string(mixed $data) | $data: 数组/模型/对象 | 字符串 | 数据转字符串(Model/Collection序列化,数组/对象JSON,标量原样返回) |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
resolve_with_validation(Application $app, ?string $concrete, string $interface, ?string $default = null) | $app: Laravel 应用实例
$concrete: 要解析的类
$interface: 必须实现的接口
$default: 默认类(可选) | 解析后的实例对象 | 从容器解析类并验证接口实现 |
| 函数名称 | 参数说明 | 返回值说明 | 函数作用说明 |
|---|
make_system_config() | 无参数 | 无返回值 | 初始化系统配置缓存(Redis+ES) |
clean_system_config() | 无参数 | 无返回值 | 清理系统配置缓存标记 |
em(\Throwable $e, $log = false, $notification = false) | $e: 异常对象
$log: 是否记录日志
$notification: 是否发送通知 | 异常信息字符串 | 统一异常处理、日志、通知 |