Skip to content

Releases: zxc7563598/php-tools

v2.2.1

06 May 01:28
Compare
Choose a tag to compare

无关痛痒的README调整

v2.2.0

30 Apr 01:07
Compare
Choose a tag to compare

增加新的包:

包名 简介
hejunjie/address-parser 收货地址智能解析工具,支持从非结构化文本中提取用户/地址信息
hejunjie/url-signer URL 签名工具,支持对 URL 进行签名和验证。
hejunjie/google-authenticator Google Authenticator 及类似应用的密钥生成、二维码创建和 OTP 验证。
hejunjie/simple-rule-engine 一个轻量、易用的 PHP 规则引擎,支持多条件组合、动态规则执行。

v2.1.0

15 Apr 05:21
Compare
Choose a tag to compare

更新内容

增加了 hejunjie/address-parser 包:收货地址智能解析工具,支持从非结构化文本中提取用户/地址信息

v2.0.0

12 Apr 06:31
Compare
Choose a tag to compare

这是 hejunjie/tools 的一次重大结构调整版本。

🎯 主要变更:

  • 拆分为五个独立模块(Composer 包):
    • hejunjie/cache
    • hejunjie/china-division
    • hejunjie/error-log
    • hejunjie/mobile-locator
    • hejunjie/utils
  • 本包本身不再包含逻辑代码,仅作为集合入口统一依赖这些工具包。

⚠️ 注意事项:

  • 如需按需引用,请直接安装对应子包(如 composer require hejunjie/cache)。
  • 如需继续一站式使用,安装本包依然可获得原先所有功能。

v1.1.0

21 Mar 15:02
Compare
Choose a tag to compare

版本: v1.1.0
发布日期: 2025-03-21

新增内容

多层缓存删除操作

多层缓存增加 del 方法用于删除 key

v1.0.8

13 Mar 09:12
Compare
Choose a tag to compare

版本: v1.0.8
发布日期: 2025-03-13

新增内容

日志记录

不同框架通常自带日志系统,但要么强绑定到框架,更换框架就要重构日志方案,要么像 Monolog 这类强大的日志系统功能过于庞大。而为了在不同框架中保持通用性,同时避免过度复杂,我基于责任链模式实现了一个轻量级的日志模块

使用方法:

<?php

$log = new \Hejunjie\Tools\Log\Logger([
    new \Hejunjie\Tools\Log\Handlers\ConsoleHandler(),                // 打印到控制台
    new \Hejunjie\Tools\Log\Handlers\FileHandler('日志存储文件夹路径'),  // 存储到文件
    new \Hejunjie\Tools\Log\Handlers\RemoteApiHandler('请求url')       // 发送到某个地址
]);

$log->info('标题','内容',['上下文']);     // INFO 级
$log->warning('标题','内容',['上下文']);  // WARNING 级
$log->error('标题','内容',['上下文']);    // ERROR 级

$log->log('自定义级别','标题','内容',['上下文']);

以及:如果有其他的拓展需要可以自行实现,实现 \Hejunjie\Tools\Log\LogHandlerInterface 即可

v1.0.7

11 Mar 08:23
Compare
Choose a tag to compare

版本: v1.0.7
发布日期: 2025-03-12

新增内容

多级缓存

注意:为了拓展方便,代码仅仅实现了缓存层(内存/redis/文件),实际应用场景中建议自行完善数据层,大概代码如下所示

<?php

// 自定义数据源 - 数据库层
class UserDataSource implements \Hejunjie\Tools\Cache\Interfaces\DataSourceInterface
{
    
    // 构造函数,如果是最后一层则不需要构造函数
    // public function __construct(
    //     DataSourceInterface $wrapped
    // ) {
    //     parent::__construct($wrapped);
    // }

    public function get(string $key): ?string
    {
        // 根据 key 在数据库中获取对应内容
        // 返回内容字符串 `string`

        // 如果下一层返回数据,则在当前层存储。如果是最后一层则不需要下列代码
        // $content = $this->wrapped->get($key);
        // if ($content !== null) {
        //     $this->set($key, $content);
        // }
        // return $content;

    }

    public function set(string $key, string $value): bool
    {
        // 根据 key 在数据库中存储 value
        // 返回存储结果 `bool`
    }
}

实际使用方法:

<?php

use Hejunjie\Tools\Cache\Decorators;

// 构建缓存链:内存 → Redis → 文件 → 自定义数据源
$cache = new Decorators\MemoryCache(
    new Decorators\RedisCache(
        new Decorators\FileCache(
            new UserDataSource(
                ... // 可以继续套娃
            ),
            '[文件]缓存文件夹路径',
            '[文件]缓存时长(秒)'
        ),
        '[redis]配置'
        '[redis]前缀'
        '[redis]是否持久化链接'
    ),
    '[内存]缓存时长(秒)',
    '[内存]缓存数量(防止内存溢出)'
);

// 获取数据
$data = $cache->get('key')
// 存储数据
$data = $cache->set('key','value')
存储层 数据保留时间
[内存] MemoryCache 进程生命周期(脚本结束即消失)
[redis] RedisCache 根据配置的TTL(默认1小时)
[文件] FileCache 文件系统保留,直到过期或手动删除
[数据库] UserDataSource 用户自行实现

v1.0.6

15 Dec 02:32
Compare
Choose a tag to compare

不重要的调整

v1.0.5

15 Dec 02:10
Compare
Choose a tag to compare

版本: v1.0.5
发布日期: 2024-12-15

变更内容

  • 增加了字符串操作 补充特定字符串,使其达到指定长度 方法
  • 增加了字符串操作 替换字符串中第一次出现的搜索值 方法
  • 优化了图片操作 将 Base64 字符串保存为图片 方法

v1.0.4

02 Dec 03:08
Compare
Choose a tag to compare

版本: v1.0.4
发布日期: 2024-12-02

变更内容

  • 增加了文件操作 获取文件中的唯一行(去重) 方法
  • 增加了文件操作 从多个文件中获取交集行 方法
  • 增加了文件操作 从多个csv文件中快速提取列 方法