jarjak/collection
Composer 安装命令:
composer require jarjak/collection
包简介
Immutable, type-aware PHP Collection.
关键字:
README 文档
README
Collection pattern implementation with map, flatMap, reduce, sort, unique etc. methods. Serializable to JSON.
Requirements
PHP >= 7.1
Installation
This package is available on composer via packagist.
composer require jarjak/collection
Usage
Basic usage
use JarJak\Collection\Collection; $dateArray = [ new DateTime(), new DateTimeImmutable(), ]; $dateCollection = new Collection(...$dateArray); # or $dateCollection = Collection::from($dateArray); # then do what you know from other collection implementations $plusYears = $dateCollection ->map(fn($date) => $date->modify('+1 year')) ->toArray();
Adding type check feature
One of the coolest features of this implementation is that you can set up your own specific, type-aware collections (think about them like aggregates / repositories). Then you can encapsulate any custom operations that you need to perform on a group of same-type objects (instead for doing it in foreach loop somewhere in your controller / service).
use JarJak\Collection\Collection; class DateCollection extends Collection { // accept only date objects public function __construct(DateTimeInterface ...$items) { parent::__construct(...$items); } // you can personalize it by adding custom methods too! public function getMaxYear(): int { return $this->reduce( 0, function (int $current, DateTimeInterface $date): int { $year = (int) $date->format('Y'); return $current > $year ? $current : $year; } ); } } # this is acceptable $dateCollection = new DateCollection( new DateTime(), new DateTimeImmutable() ); # this will result in an error $dateCollection = new DateCollection( new DateTime(), new DateTimeImmutable(), date('now') ); # then this will work $plusYears = $dateCollection->map(fn($date) => $date->modify('+1 year')); # but this won't $dateStrings = $dateCollection->map(fn($date) => $date->format('Y-m-d')); # unless you explicitly disable type check (which effectively sends you back to the base Collection class) $dateStrings = $dateCollection ->disableTypeCheck() ->map(fn($date) => $date->format('Y-m-d'));
Inspired by
jarjak/collection 适用场景与选型建议
jarjak/collection 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21.36k 次下载、GitHub Stars 达 1, 最近一次更新时间为 2020 年 11 月 18 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「collection」 「immutable」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 jarjak/collection 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 jarjak/collection 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 jarjak/collection 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Simple, immutable data structures
This package provides type-safe extension of the laravel collection, forcing a single type of object.
Traits to build collections of specific objects
Stk Immutable Data objects
MongoDB database access using immutables
ItalyStrap Helpers
统计信息
- 总下载量: 21.36k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 9
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-11-18