stefna / ds-collection
stefna的常见集合类
1.1.0
2024-03-22 12:30 UTC
Requires
- php: ^8.2
- ext-ds: *
Requires (Dev)
- bnf/phpstan-psr-container: ^1.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan: ^1.10
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^10.5
- squizlabs/php_codesniffer: ^3.9
- stefna/codestyle: ^1.15
- tomasvotruba/type-coverage: ^0.0.7
This package is auto-updated.
Last update: 2024-09-22 13:37:54 UTC
README
本包是一个轻量级的配置加载器,以类型安全为主要基石。
要求
PHP 8.2 或更高版本。
安装
composer require stefna/ds-collection
用法
通用实现
为了方便和内部使用,我们提供了集合的2个通用实现
列表
<?php use Stefna\Collection\GenericListCollection; use Stefna\Collection\GenericMapCollection; /** @var GenericListCollection<ClassType> */ $collection = new GenericListCollection(ClassType::class); $collection[] = new ClassType(); // or $collection->add(new ClassType()); /** @var GenericMapCollection<ClassType> */ $newCollection = $collection->indexBy(fn (ClassType $o) => (string)$o->id);
映射
<?php use Stefna\Collection\GenericListCollection; use Stefna\Collection\GenericMapCollection; /** @var GenericMapCollection<ClassType> */ $collection = new GenericMapCollection(ClassType::class); $collection['id'] = new ClassType(); // or $collection->add('id', new ClassType()); foreach ($collection as $key => $object) { $key === string; $object === ClassType::class; } /** @var GenericListCollection<ClassType> */ $listCollection = $collection->toList(); foreach ($collection as $key => $object) { $key === int; $object === ClassType::class; }
创建类型化集合
最好是子类化 AbstractListCollection
和 AbstractMapCollection
<?php use Stefna\Collection\AbstractListCollection; final class RowCollection extends AbstractListCollection { protected static string $defaultCollectionType = ClassType::class; } $collection = new RowCollection(); $collection->getType() === ClassType::class;
贡献
我们总是很高兴收到错误/安全报告和错误/安全修复
许可
MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件