import{_ as i,o as a,c as t,a2 as e}from"./chunks/framework.BbmSSMjL.js";const c=JSON.parse('{"title":"D. 公共函数速查","description":"","frontmatter":{},"headers":[],"relativePath":"zh/appendix/functions.md","filePath":"zh/appendix/functions.md"}'),n={name:"zh/appendix/functions.md"};function d(l,s,h,r,p,k){return a(),t("div",null,[...s[0]||(s[0]=[e(`

D. 公共函数速查 ​

概述

以下函数定义在 app/Helpers/helpers.php 中(通过 composer.json 的 autoload.files 自动加载),可在任何地方直接调用。

字符串 / 加密 ​

函数说明签名
random_string($length)生成随机字符串string random_string(int $length = 16)
encrypt_password($password, $salt)密码加密(委托 PasswordService)array encrypt_password(string $password, ?string $salt = null)
verify_password($password, $hash, $salt)验证密码bool verify_password(string $password, string $encryptPassword, string $salt)

文件处理 ​

函数说明签名
save_file($fileUrl, $saveDir)临时文件迁移到正式目录save_file(string $fileUrl, string $saveDir = '')
save_content(&$content, $saveDir)处理富文本中的媒体文件(迁移 + 域名替换)bool save_content(string &$content, string $saveDir = 'article')
save_content_match(...)富文本内单类 URL 匹配迁移(save_content 内部使用)void save_content_match(string $content, string $pattern, string $domainUrl, string $saveDir, array &$urlMap)
get_file_url($path)相对路径转完整 URLstring get_file_url(string $path)
create_file_path($saveDir, $ext)生成文件存储路径(按日期分目录)string create_file_path(string $saveDir = '', string $ext = '')
save_remote_file($url, $saveDir)保存远程文件save_remote_file(string $url, string $saveDir = '')
detect_image_ext($content)根据内容检测图片后缀?string detect_image_ext(string $content)

上传入口不在这里

HTTP 文件上传入口是 POST /api/upload/uploadFile(见 7.1 文件上传全流程),业务层的临时→正式迁移由 HasFileProcessing Trait 调用 save_file() / save_content() 完成。

驼峰 / 下划线转换 ​

函数说明签名
snake_to_camel($str)下划线转驼峰string snake_to_camel(string $str)
camel_to_snake($str)驼峰转下划线string camel_to_snake(string $str)
array_snake_to_camel($data)数组键名下划线转驼峰(递归)array array_snake_to_camel(array $data)
array_camel_to_snake($data, $except)数组键名驼峰转下划线(递归)array array_camel_to_snake(array $data, array $except = [])
is_camel_convert_enabled()是否开启转换(读 config('api.camel_snake_convert'))bool is_camel_convert_enabled()
convert_to_camel($data)单条数据转驼峰(受开关控制)convert_to_camel($data)
convert_list_to_camel($list)列表数据转驼峰(受开关控制)array convert_list_to_camel(array $list)

工具函数 ​

函数说明签名
get_client_ip()获取客户端 IP(经 ProxyMiddleware 受信代理解析)string get_client_ip()
is_internal_ip($ip)判断是否内网 / 回环地址bool is_internal_ip(string $ip)
format_page_params($params)格式化分页参数(pageNo ≥ 1、pageSize 1~100)array format_page_params(array $params)
build_tree($list, $parentId, $parentField)平面列表组装为树array build_tree(array $list, int $parentId = 0, string $parentField = 'parent_id')

使用示例 ​

php
// 生成随机字符串
$str = random_string(32);

// 密码加密与验证
$result = encrypt_password('123456');
// ['password' => '$2y$12$...', 'salt' => 'xK7pMn3qRt']
$ok = verify_password('123456', $user->password, $user->salt);

// 临时文件迁移到正式目录(HasFileProcessing 内部即这样调用)
$result = save_file($data['avatar'], 'user');
if ($result === false) {
    // 保留原值,避免误清空
}

// 相对路径补全域名
$url = get_file_url($data['avatar']);

// 驼峰转换
camel_to_snake('createTime');    // 'create_time'
snake_to_camel('create_time');   // 'createTime'

// 平面列表组装为树(树形模块 treeList 使用)
$tree = build_tree($list, 0, 'parent_id');
`,13)])])}const F=i(n,[["render",d]]);export{c as __pageData,F as default};