PHP code example of uuur86 / dalue
1. Go to this page and download the library: Download uuur86/dalue 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/ */
uuur86 / dalue example snippets
Mapper::map(StringObjects $data, array $schema, ?callable $callback = null, $default = null): array
use Dalue\Mapper;
use StrObj\StringObjects;
// 1. Ingest your source data
$data = StringObjects::instance([
'user' => [
'id' => 1,
'name' => 'John Doe',
'email' => '[email protected] ',
'details' => [
'age' => 30,
'city' => 'New York'
]
]
]);
// 2. Define the structural schema you want to achieve
// Note the '@data/' prefix to read from the source StringObject
$schema = [
'userID' => '@data/user/id',
'userName' => '@data/user/name',
'userDetails' => [
'userAge' => '@data/user/details/age',
'userCity' => '@data/user/details/city'
],
'mapped_at' => time() // Static values can be assigned directly
];
// 3. Execute the transformation
$mappedData = Mapper::map($data, $schema);
print_r($mappedData);
Array
(
[userID] => 1
[userName] => John Doe
[userDetails] => Array
(
[userAge] => 30
[userCity] => New York
)
[mapped_at] => 1723126306
)
use Dalue\Mapper;
use StrObj\StringObjects;
// ... (using the same $data from above)
$schema = [
'userID' => '@data/user/id',
'userName' => '@data/user/name',
'userEmail' => '@data/user/email',
];
$mappedData = Mapper::map(
$data,
$schema,
function (string $key, $value) {
if ($key === 'userEmail') {
return strtoupper($value);
}
return $value;
}
);
$mappedData = Mapper::map($data, ['phone' => '@data/user/phone'], null, 'N/A');
// ['phone' => 'N/A']
use Dalue\Mapper;
use StrObj\StringObjects;
use Aws\DynamoDb\DynamoDbClient;
use Aws\DynamoDb\Marshaler;
$apiPayload = [
"transaction_id" => "tx_987654321",
"customer" => [
"account_no" => "CUST-1002",
"full_name" => "John Doe",
],
"purchase_details" => [
"total_amount" => 150.50,
"items" => [
["sku" => "ITEM-01", "qty" => 2, "price" => 50.00],
["sku" => "ITEM-02", "qty" => 1, "price" => 50.50]
]
]
];
$stringObject = StringObjects::instance($apiPayload);
// The '[]' notation triggers Dalue's mergeColumns logic for collections.
// The '/*' wildcard extracts array column values across all item rows.
$schema = [
'PK' => '@data/transaction_id',
'SK' => 'METADATA',
'CustomerId' => '@data/customer/account_no',
'TotalAmount' => '@data/purchase_details/total_amount',
'OrderItems[]' => [
'SKU' => '@data/purchase_details/items/*/sku',
'Quantity' => '@data/purchase_details/items/*/qty',
'Price' => '@data/purchase_details/items/*/price'
]
];
// Step 1: Perform structural mapping and value mutations
$mappedData = Mapper::map(
$stringObject,
$schema,
function (string $key, $value) {
if ($key === 'PK') {
return 'ORDER#' . $value;
}
return $value;
}
);
// Step 2: Format the clean mapped array into DynamoDB AttributeValue format
$marshaler = new Marshaler();
$dynamoItem = $marshaler->marshalItem($mappedData);
// Result is ready to be sent to AWS DynamoDB PutItem
/*
$dynamoDbClient = new DynamoDbClient([
'region' => 'us-east-1',
'version' => 'latest'
]);
$dynamoDbClient->putItem([
'TableName' => 'OrdersTable',
'Item' => $dynamoItem
]);
*/
sh
composer install
php examples/01-basic-mapping.php # one example
composer examples # all examples