本文目录导读:

截至2025年5月,PHP的辅助函数(主要在Laravel框架的Illuminate\Support\Str、Arr、Collection等类中,以及PHP原生)新增了一些常用功能,以下是主要新增的辅助函数(基于Laravel 11.x / 12.x 以及 PHP 8.4 最新特性):
Laravel 新增/增强的辅助函数
Str 字符串辅助函数
| 函数 | 说明 | 示例 |
|---|---|---|
Str::inlineMarkdown() |
将Markdown转换为行内HTML(无块级元素) | Str::inlineMarkdown('**加粗**') |
Str::toBase64() / Str::fromBase64() |
编解码Base64(更安全,URL友好) | Str::toBase64('hello') |
Str::substrCount() |
统计子串出现次数(支持多字节) | Str::substrCount('你好你好', '你好') |
Str::isAscii() |
检查是否纯ASCII字符 | Str::isAscii('hello') |
Str::squish() |
移除多余空白(保留单词间一个空格) | Str::squish(' a b ') |
Str::trim() / Str::ltrim() / Str::rtrim() |
支持多字节的trim | Str::trim(' hello ') |
Arr 数组辅助函数
| 函数 | 说明 |
|---|---|
Arr::map() |
类似array_map但保留键名 |
Arr::sortByMany() |
按多个字段/回调排序 |
Arr::toCssClasses() |
将数组转为CSS class字符串(条件class) |
Arr::join() |
连接数组元素(支持最后一个分隔符) |
示例:Arr::toCssClasses
Arr::toCssClasses([
'btn' => true,
'btn-primary' => $isPrimary,
'hidden' => false,
]);
// 结果:'btn btn-primary'
Number 数字辅助函数(Laravel 10+)
| 函数 | 说明 |
|---|---|
Number::format() |
格式化数字(千分位、小数位) |
Number::currency() |
货币格式化 |
Number::percentage() |
百分比格式化 |
Number::ordinalNumber() |
序数词(1st, 2nd, 3rd) |
Number::spellNumber() |
数字拼写(123 → one hundred twenty-three) |
Collection 集合新增方法
| 方法 | 说明 |
|---|---|
->dd() |
调试打印并终止 |
->dump() |
调试打印不终止 |
->glob() |
使用通配符匹配集合字符串 |
->sole() |
获取唯一元素,若多/无则抛异常 |
->higherOrderMessages() |
链式调用更简洁 |
PHP 原生新增辅助函数(PHP 8.4+)
PHP 8.4 及后续版本也增加了几个实用的原生函数:
| 函数 | 说明 | 版本 |
|---|---|---|
array_find() |
返回第一个满足条件的元素 | 4 |
array_find_key() |
返回第一个满足条件的键 | 4 |
array_any() |
任意元素满足条件返回true | 4 |
array_all() |
所有元素满足条件返回true | 4 |
fdiv() |
浮点数除法(不会抛出DivisionByZeroError) | 0+ |
mb_trim() |
多字节字符串trim | 4 |
mb_ltrim() / mb_rtrim() |
多字节左/右trim | 4 |
mb_ucfirst() / mb_lcfirst() |
多字节大小写转换 | 4 |
mb_str_pad() |
多字节字符串填充 | 4 |
示例(PHP 8.4):
$users = [
['name' => 'Alice', 'age' => 30],
['name' => 'Bob', 'age' => 25],
];
// 查找第一个年龄 > 26 的用户
$user = array_find($users, fn($u) => $u['age'] > 26);
// ['name' => 'Alice', 'age' => 30]
// 检查是否所有用户都成年
$allAdult = array_all($users, fn($u) => $u['age'] >= 18); // true
其他辅助函数增强
optional() 改进
Laravel 中可接受闭包:
optional($user, fn($u) => $u->profile?->bio)
retry() 增加指数退避
retry(3, function() {
// 可能失败的操作
}, 100, function($attempt) {
return $attempt * 200; // 自定义延迟
});
report() 支持多异常报告器
report(function($e) {
// 自定义报告逻辑
return false; // 返回false阻止默认报告
});
推荐用法
- 字符串操作:优先使用
Str::class方法(比原生更安全、多字节友好) - 数组操作:用
Arr::代替原生函数获得更好的键保留和链式体验 - 数字格式化:直接使用
Number::指定区域(locale) - PHP 8.4+:升级后可用
array_find等,减少foreach
如果你是想了解某个具体版本或某个框架(如Symfony、Yii)的新增辅助函数,请告诉我,我可以提供更针对性的内容。