chh / funk
PHP 的最小功能编程库
dev-master
2012-10-13 20:29 UTC
Requires
- php: >=5.3.3
- chh/itertools: *@dev
This package is not auto-updated.
Last update: 2024-09-14 14:11:08 UTC
README
Funk 是一个为 PHP 设计的最小功能库。
这是一个集合,我在许多项目中都感到需要它
- 处理柯里化、记忆化和限制函数调用次数(
Funk\Func
)。 - 常见的集合操作符,以统一的方式处理数组 和 迭代器(
Funk\Collection
)。 - 紧包裹类型转换操作,同时也处理将对象转换为标量(
Funk\Type
)。
安装
使用 Composer 安装
php composer.phar require chh/funk:*@dev
然后在您的应用程序中要求 vendor/autoload.php
。
集合
Funk\Collection
类包装一个 PHP 可迭代值并提供操作它的方法。该集合提供几乎所有操作,使用迭代器,并通过 getIterator
(也实现了 IteratorAggregate
)公开迭代器。这意味着几乎所有操作都是懒加载评估。
如果您将 PDO 语句包裹在集合中,然后调用 map
,您可以看到这个操作。这将在一个特殊的 "MappingIterator" 中包裹 PDO 语句,该迭代器对每个元素应用回调函数,并产生回调的返回值。但是,这仅在 "MappingIterator" 被迭代时发生,在此之前没有任何操作。
示例
<?php use Funk\Collection, Funk\Collection\Operator as op; echo (new Collection(range(0, 20))) ->keep(function($x) { return $x > 5; }) ->remove(op::gt(7)) ->map(function($val) { return strval($val); }) ->join(' ');
在需要 predicate
参数的所有地方,操作都会采用具有不同特性的几个不同值
- 一个操作符快捷方式,它是
Operator
类的实例。可以通过调用此类的静态方法方便地创建实例。有效的操作符包括:is
、eq
、gt
、gte
、lt
和lte
。 - 值,然后使用
===
与当前迭代器的值进行比较。 - 回调,返回值被使用。
- 空值,翻译为
$value == true
。
__construct($iterable = null)
dup()
extend($value)
append($value)
map($fn)
reduce($callback, $initial = null)
count()
match($pattern)
asArray($assoc = true)
slice($offset, $count = -1)
join($glue = '')
tap($callback, $arguments = array())
all($predicate = null)
some($predicate = null)
compact($callback = null)
attr($attribute)
item($offset)
invoke($method, $arguments = array())
isEmpty($predicate = null)
reverse()
keep($predicate)
remove($predicate)
类型转换
示例
<?php
use Funk\Type;
class Foo
{
function __toInt()
{
return 42;
}
}
echo Type::intval(new Foo) + 1;
# Output:
# 43