qmaker/linq_php

此包的最新版本(dev-master)没有提供许可证信息。

C# LINQ 到 php

dev-master 2014-02-04 12:33 UTC

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

对应方法(如 fromjoin)的源类型是 array\Iterator\IteratorAggregatecallable 变量。表达式参数还可以指定 stringcallable 变量、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 按键排序元素

  • JoinIteratorOuterJoinIterator 两个迭代器的内/外连接

  • LimitIterator 给定范围内的迭代器

  • ProductIterator 多个迭代器的笛卡尔积

  • SkipIterator 在某些条件为真时跳过项目

  • TakeIterator 在某些条件为真时取项目

  • ProjectionIterator 转换当前值或键

  • ReverseIterator 反转顺序

  • DistinctIteratorExceptIteratorIntersectIterator 集合操作

  • LazyIterator 当第一次请求项目时构建内部迭代器

  • VariableIterator 重新分配内部迭代器