# DataStructure
The DataStructure component is in charge of providing typed immutable-like data structures, is built on top of php-ds.
TIP
Data structures are provisioned as stand-alone classes and/or traits, which adds data structure functionality directly.
# Map
The Map component is in charge of extending DS\Map functionality to provide the array replacement for Chevere.
MapInterface describes the interface for the component in charge of defining a Map utility.
# Creating Map
Create a Map by passing named arguments of any type.
use Chevere\Components\DataStructure\Map;
$map = new Map(foo: $foo, bar: $bar);
# Putting value
The withPut
method is used to put a value to the Map at the given key.
$map = $map->withPut(key: 'id', $id);
# Asserting keys
The assertHasKey
method is used to assert if the Map contains the given key(s).
$map->assertHasKey(key: 'foo');
$map->assertHasKey(key: 'notFound'); // throws Throwable
# Get value
The get
method is used to retrieve the Map value for the given key.
$getFoo = $map->get(key: 'foo'); // $foo
$getBar = $map->get(key: 'bar'); // $bar
$getId = $map->get(key: 'id'); // $id
# Typed Map
The MappedInterface describes the interface for a component supporting mapping, like Map which doesn't specify any typing.
TIP
⏩ Use MapTrait quickly implement the MappedInterface
.
With this, expose your own setters and getters accordingly to your typing and internally simply rely in the functionality provided by the MapTrait.