ulrichsg/php-collections

PHP 5.3 的集合类

dev-master 2013-07-17 13:58 UTC

This package is not auto-updated.

Last update: 2024-09-23 13:21:30 UTC


README

PHP 的数组是一种万能的数据结构 - 非常灵活,但在许多情况下,我更希望有像 Java 集合 API 提供的更具体的功能。自从 PHP 5 以来,标准 PHP 库 提供了一些类来处理这些情况,但远非全部。这个项目试图添加更多。

是什么?为什么?

想象以下代码片段,它根据类型聚合值

$totals = array();
foreach ($items as $item) {
	if (!isset($totals[$item->type])) {
		$totals[$item->type] = 0;
	}
	$totals[$item->type] += $item->value;
}

if (!isset(...)) 块使得这段代码相当难看,但它却是必要的,以避免更难看的警告。使用此包中的 NumberMap 类,我们可以避免它,只需编写

$totals = new NumberMap();
foreach ($items as $item) {
	$totals->add($item->type, $item->value);
}

集合类型

到目前为止,这个包只提供了两种集合类型

  • Map - 基本键值映射
  • NumberMap - 一个可以进行一些数学运算的映射(参见上面的示例)

我非常希望有更多,所以请告诉我你的想法 - 或者你的拉取请求 :)

常用功能

为了最大程度的地方便,这个包中的所有类都实现了以下接口

安装

  • 作为项目依赖项:只需将 ulrichsg/php-collections 添加到你的 composer.json 文件中。
  • 独立用于开发:克隆此存储库并运行 make 以查看一些有用的命令。

API 文档

前往此处 查看由 PHPDoc 生成的文档。

许可协议

此软件包在 MIT 许可协议 下发布。