bapcat / collection
功能强大且易于使用的集合,支持懒加载
0.5
2023-10-12 18:43 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-12 20:59:55 UTC
README
集合
一个模块化、基于特质的集合库,将数据控制权交回你手中。
安装
Composer
Composer 是安装 Collection 的推荐方法。
$ composer require bapcat/collection
GitHub
您还可以从 GitHub 下载此包。
功能
基本集合使用
集合使您能够以面向对象的方式轻松控制对数据的访问。标准实现支持读写操作,以及标准 foreach
迭代。
$collection = new Collection(['k1' => 'v1']); var_dump($collection->get('k1')); // 'v1' var_dump($collection->size()); // 1 $collection->set('k2', 'v2'); $collection->add('v3'); // $collection == ['k1' => 'v1', 'k2' => 'v2', 'v3'] $collection->remove('k2'); // $collection == ['k1' => 'v1', 'v3'] foreach($collection as $k => $v) { // }
自定义集合
集合是通过特质构建的,因此您可以轻松选择所需的功能。例如,您可能需要一个无法从外部修改的集合
class MyCollection implements ReadableCollectionInterface { use ReadableCollectionTrait; protected $collection = []; }
如果您想实现一个完整的读写集合,可以扩展基本 Collection
类
class MyCollection extends Collection { // }
或者,您可以实现接口和特质
class MyCollection implements ReadableCollectionInterface, WritableCollectionInterface { use ReadableCollectionTrait, WritableCollectionTrait; }
数组访问
如果您想使用数组访问您的集合,请使用 ArrayAccessCollection
类或 ArrayAccessCollectionTrait
特质。
懒加载
可写集合内置了对懒加载的支持。懒加载非常有用,例如,在数据库交互中。
$collection->lazy(1, function($key) { return User::find($key); });