List structure PHP implementation based on Doctrine collections. Supported lists:
- TypedList (by class name)
- IntegerList
- StringList
- BooleanList
- FloatList
- FunctionList
- CollectionList
- ArrayList
- ObjectList
- ResourceList
composer require vehsamrak/phplist
<?php
use Vehsamrak\ListCollection\TypedList;
use Vehsamrak\ListCollection\IntegerList;
$typedList = new TypedList(Foobar::class, [new Foobar(), new Foobar()]);
$foobar = new Foobar();
$typedList->add($foobar);
$typedList->remove($foobar);
$otherType = new OtherType();
$typedList->add($otherType); // will throw InvalidTypeException
$integerList = new IntegerList();
$integerList->add(1);
$integerList->add('not a number'); // will throw InvalidTypeException
// Examples could be found in `tests` directory
// More use cases can be found in Doctrine collections documentation:
// https://www.doctrine-project.org/projects/doctrine-collections/en/latest/index.html
You can create your own typed lists simply by extending TypedList.
<?php
use Vehsamrak\ListCollection\TypedList;
class CustomList extends TypedList
{
public function __construct(array $elements = [])
{
parent::__construct(Custom::class, $elements);
}
}
First, install development requirements with composer install
. Then, tests could be executed with vendor/bin/phpunit tests