lordmonoxide/collection

功能强大且易于使用的数据集,支持懒加载

1.0.0 2015-05-23 03:28 UTC

This package is auto-updated.

Last update: 2024-09-15 06:00:01 UTC


README

Build Status Coverage Status License

集合

一个模块化、基于特性的集合库,将数据控制权交还给你。

安装

Composer

Composer 是安装 Collection 的推荐方法。

$ composer require lordmonoxide/collection

GitHub

Phi 可以从 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);
});