Search by

fiberphp / helper

fiberphp

🧰 FiberPHP 通用工具集 —— Arr / Str / Collection 与全局助手函数。

Package info

gitee.com/fiberphp/helper

Issues

pkg:composer/fiberphp/helper

Statistics

Installs: 5

Dependents: 2

Suggesters: 0

dev-master 2026-09-24 14:50 UTC

This package is auto-updated.

Last update: 2026-09-24 14:50:11 UTC


README

FiberPHP 通用工具库,提供 Arr / Str / Collection 通用类与一组全局助手函数。

环境要求

  • PHP >= 8.3
  • ext-json
  • ext-mbstring

无任何 Composer 运行时依赖。

安装

composer require fiberphp/helper

Arr

数组操作工具,支持「点号」多维取值与多种变换:

use FiberPHP\Helper\Arr;

// 点号取值
Arr::get($array, 'user.address.city', 'default');
Arr::set($array, 'a.b.c', 1);
Arr::has($array, 'a.b.c');

// 变换
Arr::only($array, ['id', 'name']);
Arr::except($array, ['password']);
Arr::pluck($rows, 'name', 'id');          // 二维数组提取列
Arr::flatten($array, 1);                  // 降维
Arr::collapse([[1, 2], [3, 4]]);          // [1, 2, 3, 4]
Arr::first($array, fn ($v) => $v > 0);
Arr::where($array, fn ($v) => is_string($v));

// 树/深合并
Arr::toTree($flatList, 'id', 'pid', 'children');
Arr::mergeDeep($a, $b);

主要方法:accessible / add / collapse / crossJoin / divide / dot / except / exists / first / last / flatten / forget / get / has / isAssoc / only / pluck / prepend / pull / random / set / shuffle / sort / sortRecursive / query / where / wrap / mergeDeep / flatMap / toTree。

Str

字符串工具,内置 mbstring 多字节安全方法,命名风格转换有进程内缓存:

use FiberPHP\Helper\Str;

Str::contains('hello world', ['hello', 'hi']);
Str::startsWith('HelloPHP', 'Hello');
Str::endsWith('user_id', '_id');
Str::length('你好');                       // 2
Str::substr('你好世界', 1, 2);             // '好世'
Str::lower('ABC'); Str::upper('abc');
Str::snake('UserService');                // 'user_service'
Str::camel('user_name');                  // 'userName'
Str::studly('user_name');                 // 'UserName'
Str::title('hello world');                // 'Hello World'
Str::plural('user');                      // 'users'(约定表名)
Str::random(16);                          // 随机字符串

Collection

继承 ArrayObject,天然实现 Countable / IteratorAggregate / ArrayAccess / JsonSerializable,对数组的链式封装:

use function FiberPHP\Helper\collect;

$items = collect(['apple', 'banana', 'cherry'])
    ->map(fn ($v) => strtoupper($v))
    ->filter(fn ($v) => str_starts_with($v, 'B'))
    ->values();

collect($users)
    ->each(fn ($u) => $u->save())
    ->pluck('name')
    ->chunk(10)
    ->sort();

主要方法:first / last / each / map / filter / contains / reduce / chunk / sort / slice / merge / pluck / flip / keys / values / isEmpty / toArray / all。

助手函数

src/helpers.php 全局函数(if (!function_exists(...)) 防冲突),由 framework 显式 require 加载:

函数说明
value($value)解析 Closure 为返回值,非闭包原样返回
collect(?array $v)创建 Collection
data_get($target, $key, $default)点号取值,支持 * 通配符(数组与对象)
data_set(&$target, $key, $value, $overwrite)点号设值,* 通配符批量设值
data_fill(&$target, $key, $value)仅在缺失时设值(data_set 的 $overwrite=false)
copy_dir($source, $dest, $overwrite)递归拷贝目录或文件
remove_dir($dir)递归删除目录、文件、符号链接
get_realpath($path)真实路径(phar:// 协议原样返回)
cpu_count()CPU 核心数(Linux 解析 /proc/cpuinfo,其他回退 4)
// 点号 + 通配符取值
data_get($users, '*.name');               // 所有用户的 name
data_get($order, 'items.*.price');        // 订单所有商品价格

License

MIT