pyrsmk / funktions
具有函数式编程盐分的优质PHP函数
3.2.1
2022-03-01 10:25 UTC
Requires
- php: >=7.4.0
- ext-curl: *
- ext-fileinfo: *
This package is auto-updated.
Last update: 2024-08-29 03:35:47 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.