PHPackages                             can/supercan - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. can/supercan

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

can/supercan
============

CaoCan Dedicated package includes common functions

1.0.0(11mo ago)02MITPHPPHP &gt;8.0

Since Jul 24Pushed 1mo agoCompare

[ Source](https://github.com/CaoXiaoCan/superCan)[ Packagist](https://packagist.org/packages/can/supercan)[ RSS](/packages/can-supercan/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (1)Versions (2)Used By (0)

can-supercan
============

[](#can-supercan)

一个包含常用字符串处理、敏感词过滤、限流策略、高精度数学计算及业务常用工具的 PHP 综合包，支持在 ThinkPHP/Laravel 等框架中快速使用。

✨ 功能模块
------

[](#-功能模块)

- ✅ **字符串工具** (`StringHelper`)：随机串、截取、掩码、脱敏等。
- ✅ **高精度计算** (`PreciseMath`)：基于 BCMath 的链式/静态数学运算。
- ✅ **数组工具** (`ArrayHelper`)：树形转换、分组、索引重排等。
- ✅ **业务校验** (`ValidateHelper`)：身份证、信用代码、手机号校验。
- ✅ **时间工具** (`TimeHelper`)：人性化时间、常用时间段获取。
- ✅ **敏感词过滤** (`Sensitive`)：基于 DFA 思想的高性能过滤。
- ✅ **限流组件** (`RateLimiter`)：基于 Redis 的接口限流。
- ✅ **CURL 封装** (`Curl`)：简单优雅的 HTTP 请求封装。
- ✅ **大文件处理** (`FileHelper`)：生成器低内存逐行读取、分块读取、极速行数统计。
- ✅ **加密解密** (`EncryptHelper`)：AES 对称加密、安全的密码单向 Hash。
- ✅ **接口安全** (`ApiSecurityHelper`)：类似微信的接口参数签名、报文 AES 加解密。

---

📦 安装方式
------

[](#-安装方式)

```
composer require can/supercan
```

---

🚀 使用手册
------

[](#-使用手册)

### 1. 高精度数学计算 (PreciseMath)

[](#1-高精度数学计算-precisemath)

```
use can\superCan\PreciseMath;

// 静态调用
$sum = PreciseMath::add('1.1', '2.2'); // '3.30'

// 链式调用
$result = PreciseMath::calc('10.00')
    ->add('5.5')
    ->mul('2')
    ->getResult(); // '31.00'
```

### 2. 数组助手 (ArrayHelper)

[](#2-数组助手-arrayhelper)

```
use can\superCan\arrayhelper\ArrayHelper;

// 扁平数组转树形 (常用于菜单、分类)
$tree = ArrayHelper::toTree($list, 'id', 'pid');

// 树形转扁平列表
$flatList = ArrayHelper::treeToList($tree, 'children');

// 按字段分组
$groups = ArrayHelper::groupBy($list, 'type');

// 提取多维数组特定字段为键名
$indexed = ArrayHelper::arrayIndex($list, 'id');

// 二维数组多字段排序
$sorted = ArrayHelper::sortBy($list, 'score', SORT_DESC);

// 提取/排除指定的键
$only = ArrayHelper::only($user, ['id', 'name']);
$except = ArrayHelper::except($user, ['password']);

// 多维数组平铺为一维
$flat = ArrayHelper::flatten([[1, 2], [3, [4, 5]]]);

// 点语法获取深层数组值
$name = ArrayHelper::get($data, 'user.profile.name', '默认值');

// 判断是否为关联数组
$isAssoc = ArrayHelper::isAssoc(['name' => 'caocan']);

// 设置多维数组的值 (点语法)
ArrayHelper::set($data, 'a.b.c', 'value');

// 判断多维数组键是否存在 (点语法)
$hasKey = ArrayHelper::has($data, 'a.b.c');

// 获取符合条件的第一个/最后一个元素
$first = ArrayHelper::first($list, function($v) { return $v > 10; });
$last = ArrayHelper::last($list, function($v) { return $v < 100; });

// 提取多维数组中某个字段符合条件的所有项
$activeUsers = ArrayHelper::where($users, 'status', 1);

// 获取多维数组的某一列 (支持点语法)
$names = ArrayHelper::pluck($users, 'user.name', 'user.id');
```

### 3. 业务校验 (ValidateHelper)

[](#3-业务校验-validatehelper)

```
use can\superCan\validatehelper\ValidateHelper;

ValidateHelper::isIdCard('身份证号'); // bool
ValidateHelper::isCreditCode('营业执照代码'); // bool
ValidateHelper::isMobile('13800138000'); // bool
```

### 4. 字符串助手 (StringHelper)

[](#4-字符串助手-stringhelper)

```
use can\superCan\stringhelper\StringHelper;

StringHelper::random(16, 2); // 生成16位随机字母数字
StringHelper::maskPhone('13812345678'); // '138****5678'
StringHelper::camelToSnake('UserOrder'); // 'user_order'
```

### 5. 时间助手 (TimeHelper)

[](#5-时间助手-timehelper)

```
use can\superCan\timehelper\TimeHelper;

TimeHelper::humanDate(time() - 3600); // '1小时前'
[$start, $end] = TimeHelper::today(); // 今日开始和结束的时间戳
```

### 6. 敏感词过滤 (Sensitive)

[](#6-敏感词过滤-sensitive)

```
use can\superCan\sensitive\Sensitive;

$sensitive = new Sensitive();
$clean = $sensitive->load(['关键词1', '关键词2'])
                  ->text('内容...')
                  ->filter();
```

### 7. Redis 限流器 (RateLimiter)

[](#7-redis-限流器-ratelimiter)

```
use can\superCan\rateLimiter\RateLimiter;

$limiter = new RateLimiter(['host' => '127.0.0.1'], 5, 60);
if (!$limiter->allow('user_1')) {
    die('请求太频繁');
}
```

### 8. CURL 请求 (Curl)

[](#8-curl-请求-curl)

```
use can\superCan\curl\Curl;

$curl = new Curl();
$res = $curl->get('https://api.example.com/data', ['id' => 1]);
if ($res['success']) {
    print_r($res['data']);
}
```

### 9. 大文件处理 (FileHelper)

[](#9-大文件处理-filehelper)

```
use can\superCan\filehelper\FileHelper;

// 极速统计大文件行数
$lines = FileHelper::countLines('/path/to/large.log');

// 生成器逐行读取 (极低内存消耗)
foreach (FileHelper::readLines('/path/to/large.log') as $line) {
    // 处理每一行
}

// 分块读取并执行回调
FileHelper::chunkRead('/path/to/large.log', function($chunk) {
    // 处理大块数据
});
```

### 10. 加密解密 (EncryptHelper)

[](#10-加密解密-encrypthelper)

```
use can\superCan\encrypthelper\EncryptHelper;

$key = 'my-secret-key-1234567890123456';

// AES 对称加解密
$encrypted = EncryptHelper::aesEncrypt('隐私数据', $key);
$decrypted = EncryptHelper::aesDecrypt($encrypted, $key);

// 密码安全 Hash
$hash = EncryptHelper::hashPassword('123456');
$isValid = EncryptHelper::verifyPassword('123456', $hash);
```

### 11. 接口安全加密 (ApiSecurityHelper)

[](#11-接口安全加密-apisecurityhelper)

```
use can\superCan\apisecurity\ApiSecurityHelper;

$apiKey = 'my-secret-key';
$params = ['appid' => 'wx123', 'body' => '测试商品', 'empty' => ''];

// 生成类似微信支付的字典序 MD5 签名 (自动剔除空值和 sign 字段)
$sign = ApiSecurityHelper::generateSign($params, $apiKey);

// 接收端验证签名
$receivedParams = $params;
$receivedParams['sign'] = $sign;
$isValid = ApiSecurityHelper::verifySign($receivedParams, $apiKey);

// 接口报文 AES 加解密
$aesKey = md5('aes-salt');
$encryptedMsg = ApiSecurityHelper::encryptMsg('{"user": 1}', $aesKey);
$decryptedMsg = ApiSecurityHelper::decryptMsg($encryptedMsg, $aesKey);
```

---

📄 开源协议
------

[](#-开源协议)

MIT License

###  Health Score

32

—

LowBetter than 69% of packages

Maintenance73

Regular maintenance activity

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

344d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/44082466?v=4)[CaoXiaoCan](/maintainers/CaoXiaoCan)[@CaoXiaoCan](https://github.com/CaoXiaoCan)

---

Top Contributors

[![CaoXiaoCan](https://avatars.githubusercontent.com/u/44082466?v=4)](https://github.com/CaoXiaoCan "CaoXiaoCan (15 commits)")

### Embed Badge

![Health badge](/badges/can-supercan/health.svg)

```
[![Health](https://phpackages.com/badges/can-supercan/health.svg)](https://phpackages.com/packages/can-supercan)
```

###  Alternatives

[grumpydictator/firefly-iii

Firefly III: a personal finances manager.

23.9k69.5k](/packages/grumpydictator-firefly-iii)[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[blair2004/nexopos

The Free Modern Point Of Sale System build with Laravel, TailwindCSS and Vue.js.

1.2k2.4k](/packages/blair2004-nexopos)[splitsoftware/split-sdk-php

Split SDK for PHP

161.4M2](/packages/splitsoftware-split-sdk-php)[lion/bundle

Lion-framework configuration and initialization package

122.3k4](/packages/lion-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
