PHP code example of voilab / mapping
1. Go to this page and download the library: Download voilab/mapping 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/ */
voilab / mapping example snippets
$mapped = $mapping->map($data, [
'id',
'name'
]);
// results in
[
'id' => 1,
'name' => 'John'
]
$mapped = $mapping->map($data, [
'id',
'email' => function ($data) {
return $data['email'] == '[email protected] '
? '[email protected] '
: $data['email'];
}
]);
// results in
[
'id' => 1,
'email' => '[email protected] '
]
$mapped = $mapping->map($data, [
'work' => [
'section' => [
'type'
]
]
]);
// results in
[
'work' => [
'section' => [
'type' => 'Social'
]
]
]
$mapped = $mapping->map($data, [
'interests' => [[
'description'
]]
]);
// results in
[
'interests' => [
['description' => 'Some book'],
['description' => 'Football']
]
]
$mapped = $mapping->map($data, [
'interests' => [[
'contact' => [
'name'
]
]]
]);
// results in
[
'interests' => [
['contact' => [
'name' => 'Some author'
]],
['contact' => null]
]
]
$mapped = $mapping->map($data, [
'id',
'personName' => 'name'
]);
// results in
[
'id' => 1,
'personName' => 'John'
]
$mapped = $mapping->map($data, [
\voilab\mapping\Mapping::rel('work', 'nextWork') => [
'description'
]
]);
// results in
[
'nextWork' => [
'description' => 'Free worker'
]
]
$mapped = $mapping->map($data, [
'work as nextWork' => [
'description'
]
]);
$mapped = $mapping->map($data, [
'name',
'bestFriend' => [
'*'
]
]);
// results in
[
'name' => 'John',
'bestFriend' => [
'id' => 2,
'name' => 'Fred'
'age' => 30
]
]
$special_for_interest = [
['data' => 1],
['data' => 2]
];
$mapped = $mapping->map($data, [
'interests' => [[
'description',
'special' => function ($interest, $index) use ($special_for_interest) {
return $special_for_interest[$index]['data'];
},
'contact' => [
'name' => function ($contact, $index, $indexes, $parents) {
// if you want to access the parent interest. The first parent
// is the top parent: 0 => main data, 1 => interest
return $contact['name'] . ' for ' . $parents[1]['description'];
}
]
]]
]);
// results in
[
'interests' => [
[
'description' => 'Some book',
'special' => 1,
'contact' => [
'name' => 'Some author for Some book'
]
],
[
'description' => 'Football',
'special' => 2,
'contact' => null
]
]
]
$mapping = new \voilab\mapping\Mapping(
new \my\object\Hydrator(),
new \my\array\Hydrator()
);
$mapping->addPlugin(new \voilab\mapping\plugin\FirstInCollection());
$mapping->setPluginKeySeparator(null);
$mapped = $mapping->map($data, [
'sectionType' => 'work.section.type',
'interests' => [[
'contactName' => 'contact.name'
]]
]);
// results in
[
'sectionType' => 'Social',
'interests' => [
['contactName' => 'Some author']
['contactName' => null]
]
]
$mapping->addPlugin(new \voilab\mapping\plugin\FirstInCollection());
$mapped = $mapping->map($data, [
'firstInterestContactName' => 'interests[].contact.name'
]);
// results in
[
'firstInterestContactName' => 'Some author'
]