每个项目都写 helper? 为什么不自己搞一个呢?给你一个不一样的 PHP-tools 分享

工具包分享

相信每个人都有这样的问题,每开一个新项目,都要写一个 helper 文件,复制粘贴是挺方便。
但是后续维护新增一个方法,就需要复制到每个 helper,这样真的好吗?
9102 年了,在现在这种项目趋于服务化的形势下,业务拆分的模块只多不少,还要这么 low 的复制吗?
9102 年了,我们还不好好使用 composer 吗?
9102 年了,你该有一个属于自己的工具包了。
在这里分享一下我自己的工具包:yiranzai/php-tools,很多东西都参考了 laravel

ps: 我不是说一定要让你用我的包,毕竟第一我的包内容有限,第二这种东西更应该发布在内部的仓库上,composer.json 是可以指定包的来源的

仅供参考,欢迎批评和pr

个人推荐

这一段理解为王婆卖瓜

查看完整直接看下边 用户手册

  • \Yiranzai\Tools\Arr::sortBy()

    使用给定的回调对数组进行排序并保留原始键,支持多列排序,特别实用。

  • \Yiranzai\Tools\Date::toCarbon($dateTime, $default)

    生成 Carbon 对象,不合法数据会返回默认值

  • \Yiranzai\Tools\Date::timeDiffFormat($leftTime, $rightTime, $absolute)

    人性化显示两个 DateTime 对象的差,9102 年了,我的同事还在 strtotime() 相减然后慢慢取余呢

  • \Yiranzai\Tools\Math::formatDiv()

    四舍五入除法,基于 bcmath,不用担心除数为 0 的问题

  • \Yiranzai\Tools\Tools::iteratorGet()

    获取一个对象或者一个数组的属性,如果属性或者 key 不存在,返回默认值,如果默认值是一个异常,抛出异常。(对于手动校验的参数相当实用)

  • \Yiranzai\Snowflake\SnowFlake::next()

    雪花算法生成 64 位 id,这个自行搜索雪花算法

  • \Yiranzai\Snowflake\SnowFlake::analysis() // 解析 64 位 id

    解析雪花算法生成的 64 位 id

用户手册

  • Arr::class
    • \Yiranzai\Tools\Arr::sortBy() // 使用给定的回调对数组进行排序并保留原始键,支持多列排序
    • \Yiranzai\Tools\Arr::arrSortByField() // 二维数组排序
    • \Yiranzai\Tools\Arr::arrGroup() // 数组按字段分组
    • \Yiranzai\Tools\Arr::heapSort() // 堆排序
    • \Yiranzai\Tools\Arr::mergeSort() // 归并排序
    • \Yiranzai\Tools\Arr::quickSort() // 快速排序
  • Date::class
    • \Yiranzai\Tools\Date::toCarbon() // 生成 Carbon 对象
    • \Yiranzai\Tools\Date::timeDiffFormat() // 输出两个 DateTime 对象的差距
  • Math::class
    • \Yiranzai\Tools\Math::formatDiv() // 四舍五入 格式化除法
    • \Yiranzai\Tools\Math::formatMod() // 四舍五入 格式化取余(模运算)
    • \Yiranzai\Tools\Math::formatMul() // 四舍五入 格式化乘法
    • \Yiranzai\Tools\Math::formatSub() // 四舍五入 格式化减法
    • \Yiranzai\Tools\Math::formatAdd() // 四舍五入 格式化加法
    • \Yiranzai\Tools\Math::gcd() // 求两个数的最大公约数
    • \Yiranzai\Tools\Math::gcdArray() // 求一个数组的最大公约数
  • Filesystem::class
    • \Yiranzai\Tools\Filesystem::hash() // 获取给定路径上的文件的 MD5 哈希值。
    • \Yiranzai\Tools\Filesystem::prepend() // 将内容存储到到文件开头。
    • \Yiranzai\Tools\Filesystem::exists() // 确定文件或目录是否存在。
    • \Yiranzai\Tools\Filesystem::put() // 将内容存储在文件中。
    • \Yiranzai\Tools\Filesystem::makeDirectory() // 创建一个目录。
    • \Yiranzai\Tools\Filesystem::get() // 获取文件的内容。
    • \Yiranzai\Tools\Filesystem::isFile() // 确定给定路径是否为文件。
    • \Yiranzai\Tools\Filesystem::sharedGet() // 获取具有共享访问权限的文件的内容。
    • \Yiranzai\Tools\Filesystem::size() // 获取给定文件的文件大小。
    • \Yiranzai\Tools\Filesystem::append() // 将内容存储到到文件结尾(追加)。
    • \Yiranzai\Tools\Filesystem::chmodFile() // 获取或设置文件或目录的 UNIX 模式。
    • \Yiranzai\Tools\Filesystem::move() // 将文件移动到新位置。
    • \Yiranzai\Tools\Filesystem::name() // 从文件路径中提取文件名。
    • \Yiranzai\Tools\Filesystem::basename() // 从文件路径中提取尾随名称组件。
    • \Yiranzai\Tools\Filesystem::dirname() // 从文件路径中提取父目录。
    • \Yiranzai\Tools\Filesystem::extension() // 从文件路径中提取文件扩展名。
    • \Yiranzai\Tools\Filesystem::type() // 获取给定文件的文件类型。
    • \Yiranzai\Tools\Filesystem::mimeType() // 获取给定文件的 mime 类型。
    • \Yiranzai\Tools\Filesystem::lastModified() // 获取文件的上次修改时间。
    • \Yiranzai\Tools\Filesystem::isReadable() // 确定给定路径是否可读。
    • \Yiranzai\Tools\Filesystem::isWritable() // 确定给定路径是否可写。
    • \Yiranzai\Tools\Filesystem::moveDirectory() // 移动目录。
    • \Yiranzai\Tools\Filesystem::isDirectory() // 确定给定路径是否是目录。
    • \Yiranzai\Tools\Filesystem::deleteDirectory() // 递归删除目录。
    • \Yiranzai\Tools\Filesystem::delete() // 删除给定路径的文件。
    • \Yiranzai\Tools\Filesystem::copyDirectory() // 将目录从一个位置复制到另一个位置。
    • \Yiranzai\Tools\Filesystem::copyFile() // 将文件复制到新位置。
    • \Yiranzai\Tools\Filesystem::cleanDirectory() // 清空所有文件和文件夹的指定目录。
    • \Yiranzai\Tools\Filesystem::windowsOs() // 确定当前环境是否基于 Windows。
  • Tools::class
    • \Yiranzai\Tools\Tools::getNiceFileSize() // 人性化转化内存信息
    • \Yiranzai\Tools\Tools::callFunc() // 调用对象的方法
    • \Yiranzai\Tools\Tools::iteratorGet() // 获取一个对象或者一个数组的属性
    • \Yiranzai\Tools\Tools::arrGet() // 获取数组中的某个元素
    • \Yiranzai\Tools\Tools::objectGet() // 获取对象中的某个元素
  • SnowFlake::class
    • \Yiranzai\Snowflake\SnowFlake::next() // 生成 64 位 id
    • \Yiranzai\Snowflake\SnowFlake::analysis() // 解析 64 位 id
本帖由系统于 1个月前 自动加精
一冉再
讨论数量: 10

还有snowflake 这个功能了,NB

3个月前 评论
一冉再

@BradStevens 其实是另外写的包引入了 yiranzai/snowflake

3个月前 评论
lmaster

先 star

3个月前 评论
一冉再

@lmaster 老哥,这么看得起我吗?THX

3个月前 评论
xiaoniuge

写了测试用例的,稳

3个月前 评论
一冉再

@xiaoniuge 写单元测试是个好习惯,要坚持,哈哈哈

3个月前 评论

@一冉再 恩的,感觉这个应用场景有点少,有这个功能挺厉害的

3个月前 评论
lmaster

@一冉再 所以,要加油欧!!!

3个月前 评论
Ali

这个好,我先 fork 一份去。

1个月前 评论
一冉再 (楼主) 1个月前
private static function swap(&$a, &$b): void
    {
        $t = $a;
        $a = $b;
        $b = $t;
    }

我都习惯用 list($b,$a)=[$a,$b];

1周前 评论
一冉再 (楼主) 1周前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!