PHP code example of squidit / array-to-object
1. Go to this page and download the library: Download squidit/array-to-object library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
squidit / array-to-object example snippets
declare(strict_types=1);
use SquidIT\Hydrator\ArrayToObject;
use SquidIT\Hydrator\Class\ClassInfoGenerator;
use SquidIT\Hydrator\Tests\Unit\ExampleObjects\Car\Complete\CarComplete;
$classInfoGenerator = new ClassInfoGenerator();
$hydrator = new ArrayToObject($classInfoGenerator);
$data = [
'color' => 'black',
'nrOfDoors' => 4,
'mileagePerLiter' => 16.3,
'passengerList' => ['melvin', 'bert'],
'manufacturer' => [
'addressLine1' => 'Beautiful Street 123',
'addressLine2' => 'Apartment 1234',
'city' => 'Rotterdam',
'employeeList' => [
['employeeName' => 'cecil'],
['employeeName' => 'melvin'],
],
],
'interCoolers' => [
[
'speedRangeMinRpm' => 200,
'speedRangeMaxRpm' => 2160,
'isWaterCooled' => true,
'speedCategory' => 'fast',
],
[
'speedRangeMinRpm' => 100,
'speedRangeMaxRpm' => 2200,
'isWaterCooled' => false,
'speedCategory' => 'slow',
],
],
'countryEntryDate' => '2015-06-01 13:45:01',
'extraInfo' => null,
];
$carComplete = $hydrator->hydrate($data, CarComplete::class);
var_dump($carComplete);
declare(strict_types=1);
use SquidIT\Hydrator\Class\ClassInfoGenerator;
use SquidIT\Hydrator\DotNotationArrayToObject;
use SquidIT\Hydrator\Property\DotNotationFormat;
use SquidIT\Hydrator\Tests\Unit\ExampleObjects\Car\Complete\CarComplete;
$classInfoGenerator = new ClassInfoGenerator();
$hydratorJavaScript = new DotNotationArrayToObject($classInfoGenerator, DotNotationFormat::JAVASCRIPT);
$hydratorExplode = new DotNotationArrayToObject($classInfoGenerator, DotNotationFormat::EXPLODE);
$dataDotNotationJavascript = [
'color' => 'black',
'nrOfDoors' => 4,
'mileagePerLiter' => 16.3,
'passengerList' => ['melvin', 'bert'],
'manufacturer.addressLine1' => 'Beautiful Street 123',
'manufacturer.addressLine2' => 'Apartment 1234',
'manufacturer.city' => 'Rotterdam',
'manufacturer.employeeList[0].employeeName' => 'cecil',
'manufacturer.employeeList[1].employeeName' => 'melvin',
'interCoolers[0].speedRangeMinRpm' => 200,
'interCoolers[0].speedRangeMaxRpm' => 2160,
'interCoolers[0].isWaterCooled' => true,
'interCoolers[0].speedCategory' => 'fast',
'interCoolers[1].speedRangeMinRpm' => 100,
'interCoolers[1].speedRangeMaxRpm' => 2200,
'interCoolers[1].isWaterCooled' => false,
'interCoolers[1].speedCategory' => 'slow',
'countryEntryDate' => '2015-06-01 13:45:01',
'extraInfo' => null,
];
$dataDotNotationExplode = [
'color' => 'black',
'nrOfDoors' => 4,
'mileagePerLiter' => 16.3,
'passengerList' => ['melvin', 'bert'],
'manufacturer.addressLine1' => 'Beautiful Street 123',
'manufacturer.addressLine2' => 'Apartment 1234',
'manufacturer.city' => 'Rotterdam',
'manufacturer.employeeList.0.employeeName' => 'cecil',
'manufacturer.employeeList.1.employeeName' => 'melvin',
'interCoolers.0.speedRangeMinRpm' => 200,
'interCoolers.0.speedRangeMaxRpm' => 2160,
'interCoolers.0.isWaterCooled' => true,
'interCoolers.0.speedCategory' => 'fast',
'interCoolers.1.speedRangeMinRpm' => 100,
'interCoolers.1.speedRangeMaxRpm' => 2200,
'interCoolers.1.isWaterCooled' => false,
'interCoolers.1.speedCategory' => 'slow',
'countryEntryDate' => '2015-06-01 13:45:01',
'extraInfo' => null,
];
$carComplete = $hydratorJavaScript->hydrate($dataDotNotationJavascript, CarComplete::class);
$carComplete = $hydratorExplode->hydrate($dataDotNotationExplode, CarComplete::class);
var_dump($carComplete);
class Car
{
public function __construct(
public string $color,
public Honda $manufacturer,
) {}
}
$data = [
'color' => 'black',
'manufacturer' => [ // <-- Honda::class
'name' => 'Beautiful Street 124',
'city' => 'Rotterdam',
'employeeList' => []
],
];
use SquidIT\Hydrator\Attributes\ArrayOf;
class Honda implements ManufacturerInterface
{
/**
* @param array<int, Employee> $employeeList
*/
public function __construct(
public string $name,
public string $city,
#[ArrayOf(Employee::class)]
public array $employeeList,
) {}
}