PHP辅助函数新增了哪些

wen PHP项目 2

本文目录导读:

PHP辅助函数新增了哪些

  1. Laravel 新增/增强的辅助函数
  2. PHP 原生新增辅助函数(PHP 8.4+)
  3. 其他辅助函数增强
  4. 推荐用法

截至2025年5月,PHP的辅助函数(主要在Laravel框架的Illuminate\Support\StrArrCollection等类中,以及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阻止默认报告
});

推荐用法

  1. 字符串操作:优先使用Str::class方法(比原生更安全、多字节友好)
  2. 数组操作:用Arr::代替原生函数获得更好的键保留和链式体验
  3. 数字格式化:直接使用Number::指定区域(locale)
  4. PHP 8.4+:升级后可用array_find等,减少foreach

如果你是想了解某个具体版本某个框架(如Symfony、Yii)的新增辅助函数,请告诉我,我可以提供更针对性的内容。

抱歉,评论功能暂时关闭!