pyrsmk/funktions

具有函数式编程盐分的优质PHP函数

3.2.1 2022-03-01 10:25 UTC

README

Funktions 是一组有用的PHP函数,旨在通过添加PHP核心中缺少的函数来简化您的开发工作,并带有函数式编程的调味品。它深受Ruby-like API的启发,并从我的实际业务场景中获得了灵感。

这些函数的设计

  • 为不可变对象
  • 支持迭代器,不仅仅是数组
  • 支持所有可调用者,不仅仅是闭包
  • 首先使用生成器,因为它们很酷!

警告!!! 此库仍在积极开发中,尚未经过测试

安装

composer require pyrsmk/funktions

用法

use function Funktions\array_flatten;

$fruits = [
  ['strawberries', 'kiwis'],
  [
    ['oranges'],
    [
      ['lemons'],
      [
        'melons',
        ['raspberries']
      ]
    ]
  ]
];

$flatten_fruits = array_flatten($fruits);

array.php

  • array_diff_strict (array $array1, array $array2) : array:通过比较相同索引的值来执行两个数组的严格差集。
  • array_drop (array $array, int $offset, int $length) : array:删除数组的部分(不可变的 array_splice)。
  • array_intersect_strict (array $array1, array $array2) : array:通过比较相同索引的值来执行两个数组的严格交集。
  • array_fill_multi (int $dimensions, int $size, mixed $value) : array:初始化多维数组。
  • array_flatten (array $array, ?int $min_depth = null) : array:必要时通过保持任意最小深度来展平数组。
  • array_merge_recursive_unique (array ...$arrays) : array:与 array_merge_recursive() 相反,它通过替换相同键的值来合并数组,而不是将它们追加到新数组中。
  • array_seek (array &$array, int|string $key) : void:将数组指针移动到指定的键(可变的)。
  • array_substitute (array $array, int $offset, int $length, array $replacement) : array:改进的 array_splice(),在替换时支持完整的字符串键。
  • glue (array $array, string $glue = '') : string:将数组元素粘合在一起,类似于 implode(),但参数顺序正确。
  • immut_array_push (array $array, ...$elements) : array:不可变的 array_push()
  • immut_array_shuffle (array $array) : array:不可变的 shuffle()
  • immut_array_unset (array $array, int|string $key):不可变的 unset()
  • immut_array_unshift (array $array, ...$elements) : array:不可变的 array_unshift()
  • immut_arsort (array $array, int $flags = SORT_REGULAR) : array:不可变的 arsort()
  • immut_asort (array $array, int $flags = SORT_REGULAR) : array:不可变的 asort()
  • immut_krsort (array $array, int $flags = SORT_REGULAR) : array:不可变的 krsort()
  • immut_ksort (array $array, int $flags = SORT_REGULAR) : array:不可变的 ksort()
  • immut_natcasesort (array $array) : array:不可变的 natcasesort()
  • immut_natsort (array $array) : array:不可变的 natsort()
  • immut_rsort (array $array, int $flags = SORT_REGULAR) : array:不可变的 rsort()
  • immut_sort (array $array, int $flags = SORT_REGULAR) : array:不可变的 sort()
  • immut_uasort (array $array, callable $compare) : array:不可变的 uasort()
  • immut_uksort (array $array, callable $compare) : array:不可变的 uksort()
  • immut_usort (array $array, callable $compare) : array:不可变的 usort()
  • kmax (array $array) : mixed:返回最大值的键。
  • kmin (array $array) : mixed:返回最小值的键。

color.php

  • hex2rgb (string $hex) : array:将HTML颜色转换为RGB颜色。
  • hsl2rgb (int $h, int $s, int $l) : array:将HSL颜色转换为RGB颜色。
  • hsv2rgb (int $h, int $s, int $v) : array:将HSV颜色转换为RGB颜色。
  • rgb2hex (int $r, int $g, int $b) : string:将RGB颜色转换为HTML颜色。
  • rgb2hsl (int $r, int $g, int $b) : array:将RGB颜色转换为HSL颜色。
  • rgb2hsv (int $r, int $g, int $b) : array:将RGB颜色转换为HSV颜色。

iterable.php

  • all (iterable $iterable, callable $callable) : bool:当所有元素都符合调用函数的条件时,返回true
  • any (iterable $iterable, callable $callable) : bool:当至少有一个元素符合调用函数的条件时,返回true
  • ensure_generator ($maybe_a_generator) : Generator:确保传入的值将是一个生成器。
  • enumerate (iterable $iterable, ?callable $callable = null) : int:在可迭代对象中枚举元素。
  • first (iterable $iterable) : mixed:返回可迭代对象中的第一个元素。注意:可迭代对象的指针将被重置。
  • iterable_to_generator (iterable $items) : Generator:将可迭代对象转换为生成器。
  • itoa (Traversable $iterator, bool $use_keys = true) : array:等同于iterator_to_array()
  • itog (iterable $items) : Generator:等同于iterable_to_generator()
  • last (iterable $iterable) : mixed:返回可迭代对象中的最后一个元素。注意:如果可迭代对象是一个数组,则其指针将被重置;如果可迭代对象不是数组,则将其转换为数组,然后要注意在能够获取其最后一个元素之前,将进行完整的迭代。
  • map (iterable $iterable, callable $callable) : Generator:类似于array_map(),但适用于任何可迭代对象,并支持键/值。
  • none (iterable $iterable, callable $callable) : bool:当没有元素符合调用函数的条件时,返回true
  • pluck (iterable $iterable, string ...$keys) : Generator:根据请求的键从可迭代对象中提取行。
  • reduce (iterable $iterable, callable $callable, $initial = null):类似于array_reduce(),但适用于任何可迭代对象,并支持键/值。
  • reject (iterable $iterable, callable $callable) : Generator:拒绝符合调用函数条件的项目。
  • select (iterable $iterable, callable $callable) : Generator:选择符合调用函数条件的项目。
  • value (iterable $iterable, string $key) : mixed:使用指定的键从一个可迭代对象中检索值。注意:应该与散列或数组一起使用,因为遍历可迭代对象以搜索元素效率非常低。

instruction.php

  • condition (bool $test, callable $truthy, callable $falsy) : mixed:根据测试返回一个值。
  • loop (iterable $iterable, callable $callable) : Generator:遍历可迭代对象并产生新值。
  • rescue (callable $callable, array $exceptions) : mixed:执行回调并捕获异常。

memory.php

  • memory_safe (callable $callable) : mixed:在调用函数后收集垃圾。

number.php

  • above (float $value, float $min) : float:将一个数字限制在最小值。
  • is_even (int $value) : bool:验证值是否为偶数。
  • is_odd (int $value) : bool:验证值是否为奇数。
  • under (float $value, float $max) : float:将一个数字限制在最大值。

output.php

  • capture (callable $callable) : string:在调用函数时捕获输出。
  • mute (callable $callable) : mixed:在调用函数时静音输出。
  • puts (string $text) : void:打印一行文本。

regex.php

  • regex_count (string $pattern, string $text, int $flags = 0) : int:在字符串中计算正则表达式的匹配数。
  • regex_match (string $pattern, string $text, int $flags = 0) : Generator: 返回正则表达式的第一个匹配项。
  • regex_match_all (string $pattern, string $text, int $flags = 0) : Generator: 返回正则表达式的所有匹配项。
  • regex_match_first (string $pattern, string $text, int $flags = 0) : string: 返回正则表达式第一个匹配项的第一个出现。
  • regex_test (string $pattern, string $text, int $flags = 0) : bool: 测试正则表达式是否与字符串匹配。

string.php

  • mb_lcfirst ($string, string $encoding = null) : string: 将字符串首字母小写(支持多字节)。
  • mb_to_camelcase (string $string) : string: 将字符串转换为驼峰命名(支持多字节)。
  • mb_truncate (string $string, int $length, string $encoding = null) : string: 截断字符串到指定长度并在末尾添加...(支持多字节)。
  • mb_ucfirst (string $string, string $encoding = null) : string: 将字符串首字母大写(支持多字节)。
  • mb_ucwords (string $string, string $encoding = null) : string: 将字符串中的所有单词首字母大写(支持多字节)。
  • random_hash (int $length = 5) : string: 生成随机哈希。
  • uuid_v4 () : string: 生成随机 v4 UUID。

system.php

  • human_fileperms (string $path) : string: 获取可读文件权限。
  • human_filesize (string $path) : string: 获取可读文件大小。
  • lessdir (string $dir) : array: 类似于 scandir() 但不包含 ...
  • mimetype (string $path) : string: 获取文件的 MIME 类型,支持多种机制。
  • rrmdir (string $path) : void: 递归删除目录。

许可证

MIT.