Download the PHP package obernard/property-indexer without Composer
On this page you can find all versions of the php package obernard/property-indexer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package property-indexer
🖇 Porperty Indexer & Tree builder
-
A
PorpertyIndexer
indexes objects/arrays properties inside a key-value map. - A
PorpertyTree
builds a Tree structure from a collection of objects.
PorpertyIndexer
and PropertyTree
are iterables.
Index key and value values one case, nodes and leaves in the other are retreived from objects or arrays via symfony/property-access component.
Installation
Porperty Indexer
A PorpertyIndexer
indexes objects/arrays properties inside a key-value map.
Choose :
- a string|int property to provide keys
- a mixed property or the objects|arrays themselves to provide values
Index objects properties
Say you have objects with properties id
and value
:
Create an indexer for id&value objects :
Add objects:
Retreive indexed values via their key:
Or directly via a reference to an indexed object:
Index array properties
Say you have array maps with id
and value
keys:
Create an indexer for id&value arrays (note the use of brakets for array property path):
Add arrays:
Retreive indexed values via their key:
Bulk Load collections
Use the load
method:
Or invoke PropertyIndexer
with a third argument:
Index Objects or Arrays (not their properties)
Don't specify the value path or set it to null when invoking PropertyIndexer
:
Porperty Tree Builder
A PorpertyTree
builds a Tree structure from a collection of objects.
Leaves path and values are picked from the items of the processed collection.
Porperty Tree basics
Say you have objects with properties id
, value
and date
:
Porperty Tree mode ARRAY_LEAF
Mind the possible colisions between objects sharing the "same" properties path:
To avoid possible colisions, switch to array-type leaves:
Porperty Tree advanced features
Closure as valuePath
$valuePath
2nd arg accepts a one-arg Closure (that must return int|string). While iterating the object|array collection, PorpertyTree will bind the arg with the current object|array item to extract a value.
To retrieve the object items themselves, you may use an Identity Closure ( or better set valuePath
to null
:P ) :
Closure as groupByproperties
array $groupByproperties
3nd arg accepts one-arg Closures (that must return int|string). While iterating the object|array collection, PorpertyTree will bind the arg with the current object|array item to extract a tree-path node :
Those 2 examples are dumb-ones. Closures are for performing complex tasks (to retrieve path or leaves) that objects properties do not provide natively.
Tests
Run composer test
.
Contributing
Feel free to submit pull requests.
Licence
MIT
Copyright (c) 2022 Olivier BERNARD