halfpastfouram/collection

A flexible PHP Collection complete with custom Iterator.


Keywords
php, collection
License
AGPL-3.0

Documentation

TeamCity Build Status Build Status Code Climate Test Coverage Total Downloads Latest Stable Version

Collection

A flexible PHP Collection complete with custom Iterator, part of the halfpastfouram code library.

What can you do with a collection?

A collection is a tool you can use to have a certain level of control over the data you store inside it. Where you could use an array in most situations a collection provides a more flexible way to deal with your data.

It is particularly useful to extend this class if you need to perform actions on a list of items or objects when they are added, removed, replaced or otherwise modified.

Control over collections

You can traverse all objects that extend the Collection class. To give you more flexibility, all collections in this project extends the Collection\ArrayAccess class which provides direct access as if you were talking to an array. This class also provides an iterator that can be used in loops or even manually.

Array access example

// Assuming MyCollection extends Halfpastfouram\Collection\ArrayAccess
$collection = new MyCollection();
$collection[] = 0;
$collection[5] = 12;

Traversing

foreach( $collection as $key => $value ) {
    var_dump( $key, $value );
}

Manual traversing

$collection = new MyCollection();
$iterator = $collection->getIterator();

// Jump forward to next position
$iterator->next();
var_dump( $iterator->current() );

// Go back one position
$iterator->previous();
var_dump( $iterator->getKey(), $iterator->current() );

// Receive the list of keys in the dataset.
var_dump( $iterator->calculateKeyMap() );

Installation

Using composer

$ composer require halfpastfouram/collection

Development

This project uses composer, which should be installed on your system. Most Linux systems have composer available in their PHP packages. Alternatively you can download composer from getcomposer.org.

If you use the PhpStorm IDE then you can simply init composer through the IDE. However, full use requires the commandline. See PhpStorm help, search for composer.

To start development, do composer install from the project directory.

Remark Do not use composer update unless you changed the dependency requirements in composer.json. The difference is that composer install will use composer.lock read-only, while composer update will update your composer.lock file regardless of any change. As the composer.lock file is committed to the repo, other developers might conclude dependencies have changed, while they have not.