Download the PHP package squidit/array-to-object without Composer
On this page you can find all versions of the php package squidit/array-to-object. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package array-to-object
Object Hydrator
Create an object from array data by mapping provided array keys to corresponding typed class property names.
The array keys must match the names of the object properties.
Usage - example:
output
Nested objects
If a class property contains a nested object, the hydrator can infer the object type by reading the property type.
In the example below, the Car::class
contains a named property manufacturer
which is of type Honda::class
.
When hydrating, we need to provide all data required to create a Honda object.
Nested objects: Array of objects
If a class property contains an array of objects, we need to add a property attribute:
SquidIT\Hydrator\Attributes\ArrayOf([CLASSNAME])
.
In the example below, the Honda::class
contains a property employeeList
which should contain an array of
Employee::class
objects.
By adding the property attribute SquidIT\Hydrator\Attributes\ArrayOf(Employee::class)
our hydrator knows how to hydrate
array data found under the 'employeeList' array key.
Type casting/juggling array vales into object properties
It is important to note that the hydrator will only work on classes that only contain typed properties.
If a non typed property is found an SquidIT\Hydrator\Exceptions\AmbiguousTypeException
exception will be thrown.
The hydrator supports casting into the following property types
int:
if a string contains only digits (plus and minus signs are allowed)
bool:
The following values will be cast to true
1
[int]'true'
[string]'1'
[string]'y'
[string]'yes'
[string]
The following values will be cast to false
0
[int]'false'
[string]'0'
[string]'n'
[string]'no'
[string]
DateTimeImmutable::class:
Any string value supported by strtotime()
please note: as author of this library I feel no need to support the DateTime::class
BackedEnum:
Any integer of string backed enum value
UnionTypes:
:x: Union types are not supported because we are unable to infer concrete object type implementation.