qmaker / linq_php
C# LINQ 到 php
Requires
- phpunit/phpunit: 3.7.28
This package is not auto-updated.
Last update: 2024-09-24 02:13:40 UTC
README
这是一个 PHP 库,允许按照 C# LINQ 模式查询集合。标准 LINQ 方法通过适应 PHP 语言的接口实现。这些方法的完整列表可以从 MSDN, .NET 4.5 获取。这些方法的修改版接口位于 Qmaker\Linq\Operation 命名空间中。目前,该库需要 PHP 版本 5.4。
lambda 表达式
类 Lambda 允许构建 lambda 表达式,具有存储结构的匿名函数。该类创建一个可调用的对象,可用于 LINQ 方法中的可调用标准、谓词或表达式。因此,
$f = Lambda::define()->x()->add()->v()->mult(12)->gt(36);
或
$f = Lambda::define('x+x*12>36');
是等效的
$f = function ($x) { return $x + $x*12 > 36; };
但还包括有关表达式结构的信息。
稍后将添加更多信息及示例。请参阅 单元测试。
Linq
以下方法已实现
- 聚合 - 聚合、平均、最小值、最大值、求和、计数
- 连接 - 连接、zip
- 元素 - elementAt、elementAtOrDefault、first、firstOrDefault、last、lastOrDefault、single、singleOrDefault
- 相等 - isEqual
- 过滤 - ofType、where
- 生成 - from、range、repeat、empty_、defaultIfEmpty
- 分组 - groupBy
- 连接 - product、join、joinOuter、groupJoin
- 分区 - skip、skipWhile、take、takeWhile
- 投影 - select、selectMany、cast
- 量词 - all、any、contains
- 集合 - distinct、intersect、except、union
- 排序 - orderBy、orderByDescending、thenBy、thenByDescending、reverse、order
- 其他 - toArray、toList、asEnumerable、toLookup、toDictionary、each
对应方法(如 from 或 join)的源类型是 array、\Iterator、\IteratorAggregate 或 callable 变量。表达式参数还可以指定 string、callable 变量、array 或 lambda 表达式。以下示例
$f = Linq::from([1, 2, 3, 4])->where((new Lambda())->x()->gt(2))->sum((new Lambda())->x()->mult(2));
将返回 14。稍后将添加更多信息及示例。请参阅 单元测试。
迭代器
迭代器是这个库的核心。在项目内部还实现了多个迭代器
-
CallbackFilterIterator 使用多个回调过滤项目
-
CallbackIterator 使用回调生成元素序列
-
GroupingIterator 根据键分组元素
-
IndexIterator 按键排序元素
-
JoinIterator、OuterJoinIterator 两个迭代器的内/外连接
-
LimitIterator 给定范围内的迭代器
-
ProductIterator 多个迭代器的笛卡尔积
-
SkipIterator 在某些条件为真时跳过项目
-
TakeIterator 在某些条件为真时取项目
-
ProjectionIterator 转换当前值或键
-
ReverseIterator 反转顺序
-
DistinctIterator、ExceptIterator、IntersectIterator 集合操作
-
LazyIterator 当第一次请求项目时构建内部迭代器
-
VariableIterator 重新分配内部迭代器