01d14ae3b8 | ||
---|---|---|
.. | ||
src | ||
test | ||
.codeclimate.yml | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
README.md | ||
composer.json | ||
composer.lock | ||
phpunit.xml |
README.md
Collection
A flexible PHP Collection complete with custom Iterator.
This library is still in active development and will be updated until it is deemed completed.
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 dev-master
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.