eclipxe / generic-collections
模拟泛型集合的库
Requires
- php: >=5.6
Requires (Dev)
- friendsofphp/php-cs-fixer: @stable
- jakub-onderka/php-parallel-lint: @stable
- phpunit/phpunit: @stable
- scrutinizer/ocular: @stable
- squizlabs/php_codesniffer: @stable
This package is auto-updated.
Last update: 2024-09-09 18:18:34 UTC
README
Generic Collections PHP 库是一个 PHP 5.6+,它模拟了 Java 集合框架。
由于 PHP 没有泛型,这个库将始终实现类型检查。别担心,无论如何,您始终可以使用 mixed
类型
对于具体类,使用构造函数方法
// collection = new Collection<Foo>(); $collection = new Collection(Foo::class);
对于您自己的类,可以扩展抽象类并实现适当的方法,例如
class Foos extends Collection { public function __construct(array $elements) { parent::__construct(Foo::class, $elements); } }
安装
推荐的安装方法是使用 Packagist 和 Composer。运行以下命令安装该软件包并将其添加到项目的 composer.json
中
composer require eclipxe/generic-collections
类列表
基本类
- Collection:表示同一类型的元素集合。
- Set:仅允许唯一元素的集合
- Queue:用于存储元素的集合(FIFO)
- Deque:双端队列
实现 \ArrayAccess
的类
- Map:从键到值的映射。
- List:可以通过整数索引访问的集合,也可以在列表中搜索元素。
附加类
- Stack:用于存储元素的集合(LIFO)
-
ShapeTypedStruct:具有类型值的结构(也具有\ArrayAccess
)
所有类都有以下附加选项
- 允许 null 元素/值
- 只允许唯一元素/值
- 比较相等(在成员之间进行相等比较而不是相同比较)
关于
这个库受到 Java 集合框架和 PHP ramsey/collection 库的启发。
我看到 ramsey 的包有重大变化,因为我不想对他的 API 进行重大更改,所以我决定创建自己的方法。
我还深入搜索了 Packagist,但找不到一个确保成员类型检查的库。
是的,我的错误,存储库用户名是 eclipxe13/
,而 Packagist 名称是 eclipxe/
。
兼容性
此类将与 PHP 支持的版本 兼容,并支持安全性。这意味着它将提供与 PHP 5.6+ 的兼容性,直到 2018-12-31。
由于 5.5+ 版本将于 2016-06-10 截止,这低于此库的第一个版本发布,因此不包括对该版本的支持。
没有特别努力使此库与 hhvm 兼容,因为 hhvm 包含泛型支持,并且还有一个集合库。我看到了 hack 语言实现特性(如使用抽象方法的能力)的不同之处,这些特性不兼容。此外,我还看到了 hhvm 3.6.6(Travis CI 使用的版本)中 SplDoubleLinkedList
的实现问题,该问题在版本 3.12.1 中不存在。
文档和示例
正在进行中。请耐心等待。
贡献
欢迎贡献力量!请阅读CONTRIBUTING以获取详细信息,并别忘了查看TODO和CHANGELOG文件。
版权和许可
eclipxe/generic-collections库的版权©属于Carlos C Soto,并按照MIT许可(MIT)授权使用。请参阅LICENSE获取更多信息。