dryist / functions
常见任务的函数
0.4.0
2018-12-29 19:42 UTC
Requires
- php: ^7.2
Requires (Dev)
- phpstan/phpstan: ^0.10.5
- phpstan/phpstan-phpunit: ^0.10.0
- phpunit/phpunit: ^7.3
- squizlabs/php_codesniffer: ^3.3
README
为常见编程需求提供各种实用函数。
安装
使用 composer(composer)安装和此包的最佳方式
composer require dryist/functions
用法
函数分为几个类别
所有函数都有一个常量,该常量引用完全限定的函数名。这些常量可用于组合或管道操作。
有许多其他包提供了兼容的(和/或类似的)实用函数,包括
- https://github.com/ihor/Nspl
- https://github.com/krakphp/fn
- https://github.com/lstrojny/functional-php
本包中缺失的功能可能在其他地方可以找到。
代数
always()
创建一个“K 组合器”,总是返回原始值
use function Dryist\always; $fn = always(true); assert($fn() === true);
compose()
创建一个“替换组合器”,用于组合两个可调用对象
use function Dryist\compose; $fn = compose('ucwords', 'strtolower'); assert($fn('SALLY SMITH') === 'Sally Smith');
identity()
总是返回第一个输入
use function Dryist\identity; assert(identity('foo') === 'foo');
此函数也作为 Dryist\id
的别名。
invert()
创建一个逆谓词
use function Dryist\invert; $notNull = invert('is_null'); assert($notNull(42) === true); assert($notNull(null) === true);
数组
所有数组函数接受 iterable
变量,包括数组、迭代器和生成器。
count()
计算列表或映射中的项目数
use function Dryist\count; $items = [1, 2, 3]; assert(count($items) === 3);
combine()
将两个列表组合成映射
use function Dryist\combine; use function Dryist\resolve; $keys = ['city', 'country']; $values = ['London', 'England']; $map = combine($keys, $values); assert(resolve($map) === ['city' => 'London', 'country' => 'England']);
filter()
根据值的谓词过滤列表或映射
use function Dryist\filter; use function Dryist\resolve; use function Dryist\values; $positive = function (int $value): bool { return $value > 0; }; $list = [-100, 0, 100]; $list = filter($list, $positive); // Drop keys $list = values($list); assert(resolve($list) === [100]);
filterKey()
根据键的谓词过滤列表或映射
use function Dryist\filterKey; use function Dryist\resolve; use function Dryist\values; $even = function (int $value): bool { return $value % 2 === 0; }; $map = [13 => 'a', 16 => 'b', 22 => 'c']; $map = filterKey($map, $even); // Drop keys $list = values($map); assert(resolve($list) === ['b', 'c']);
相关函数
keys()
从映射中读取键到一个列表中
use function Dryist\keys; use function Dryist\resolve; $map = ['name' => 'Jane', 'friends' => 42]; $keys = keys($map); assert(resolve($keys) === ['name', 'friends']);
map()
将值修饰符应用于列表或映射
use function Dryist\map; use function Dryist\resolve; $list = ['foo', 'bar', 'baz']; $list = map($list, 'strtoupper'); assert(resolve($list) === ['FOO', 'BAR', 'BAZ']);
mapBoth()
将值修饰符应用于列表或映射
use function Dryist\mapBoth; use function Dryist\resolve; $list = ['foo', 'bar', 'baz']; $list = mapBoth($list, function ($key, $value) { if ($key % 2 === 0) { return strtoupper($value); } return $value; }); assert(resolve($list) === ['FOO', 'bar', 'BAZ']);
与 map() 不同的是,修饰器接收键和值。
mapKey()
将键修饰符应用于列表或映射
use function Dryist\mapKey; use function Dryist\resolve; $map = ['NAME' => 'Bob', 'GAME' => 'football']; $map = mapKey($map, 'strtolower'); assert(resolve($map) === ['name' => 'Bob', 'game' => 'football'])
resolve()
是 iterator_to_array
的别名。
take()
通过键列表从映射中取一些值
use function Dryist\resolve; use function Dryist\take; $map = ['name' => 'Cassie', 'friends' => 152, 'age' => 39]; $map = take($map, ['name']); assert(resolve($map) === ['name' => 'Cassie']);
values()
将映射的值读取到一个列表中
use function Dryist\values; use function Dryist\resolve; $map = ['a' => 1, 'b' => 2, 'c' => 3]; $list = values($map); assert(resolve($list) === [1, 2, 3]);
工具
make()
创建一个构建对象的修饰符。
use function Dryist\make; use function Dryist\map; use function Dryist\resolve; $list = [[1, 2, 3], [4, 5], [6]]; $list = map($list, make(ArrayIterator::class)); assert(resolve($list)[0] instanceof ArrayIterator);
stringify()
将值转换为字符串,除非它是 null。
use function Dryist\stringify; assert(stringify(null) === null); assert(stringify(42) === "42");