1. Go to this page and download the library: Download cascademedia/cartographer 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/ */
cascademedia / cartographer example snippets
class User
{
public $firstName;
public $lastName;
}
class MyContext implements ContextInterface
{
public function getMap()
{
return (new MapBuilder())
->from(MapBuilder::REF_ARRAY)
->to(MapBuilder::REF_CLASS_PROPERTIES)
->add('firstName', 'first_name')
->add('lastName', 'last_name')
->getMap()
;
}
}
$source = [
'first_name' => 'Test First',
'last_name' => 'Test Last'
];
$destination = new User();
$mapper = new Mapper();
$context = new MyContext();
$destination = $mapper->map($destination, $source, $context);
var_dump($destination);
/*
class User#2 (2) {
public $firstName =>
string(10) "Test First"
public $lastName =>
string(9) "Test Last"
}
*/
class MyContext implements ContextInterface
{
public function getMap()
{
return (new MapBuilder())
->from(MapBuilder::REF_ARRAY)
->to(MapBuilder::REF_ARRAY)
->add('first_name', 'fname')
->add('last_name', 'lname')
->getMap()
;
}
}
$source = [
'fname' => 'Test First',
'lname' => 'Test Last'
];
$mapper = new Mapper();
$result = $mapper->map([], $source, new MyContext());
var_dump($result);
/*
array(2) {
'first_name' =>
string(10) "Test First"
'last_name' =>
string(9) "Test Last"
}
*/
var_dump($reference->setValue($data, 'Another Test First'));
/*
array(2) {
'first_name' =>
string(18) "Another Test First"
'last_name' =>
string(9) "Test Last"
}
*/
class User
{
private $firstName;
private $lastName;
public function getFirstName()
{
return $this->firstName;
}
public function setFirstName($firstName)
{
$this->firstName = $firstName;
return $this;
}
public function getLastName()
{
return $this->lastName;
}
public function setLastName($lastName)
{
$this->lastName = $lastName;
return $this;
}
}
$reference = new MutatorReference('first_name');
$user = (new User())
->setFirstName('Test First')
->setLastName('Test Last')
;
var_dump($reference->getValue($user));
// string(10) "Test First"
var_dump($reference->setValue($user, 'Another Test First'));
/*
class User#3 (2) {
private $firstName =>
string(18) "Another Test First"
private $lastName =>
string(9) "Test Last"
}
*/
class User
{
private $firstName;
public function retrieveFirstName()
{
return $this->firstName;
}
public function addFirstName($firstName)
{
$this->firstName = $firstName;
return $this;
}
}
$reference = new MutatorReference('first_name', 'retrieveFirstName', 'addFirstName');
$user = (new User())
->addFirstName('Test First')
;
// calls $user->addFirstName('Changed First')
$reference->setValue($user, 'Changed First');
// calls $user->retrieveFirstName()
$value = $reference->getValue($user);
var_dump($value);
// string(13) "Changed First"
class User
{
public $firstName;
public $lastName;
}
$reference = new PropertyReference('firstName');
$user = new User();
$user->firstName = 'Test First';
$user->lastName = 'Test Last';
var_dump($reference->getValue($user));
// string(10) "Test First"
var_dump($reference->setValue($user, 'Another Test First'));
/*
class User#3 (2) {
public $firstName =>
string(18) "Another Test First"
public $lastName =>
string(9) "Test Last"
}
*/
(new MapBuilder())
->from(MapBuilder::REF_ARRAY)
->to(Mapbuilder::REF_CLASS_MUTATORS)
;
(new MapBuilder())
->add('first_name', 'fname')
;
// add() creates a mapping equivalent to:
new Mapping(new ArrayReference('first_name'), new ArrayReference('fname'))
(new MapBuilder())
->addEmbedded('name', (new MapBuilder())
->add('first_name', 'fname')
->add('last_name', 'lname')
->getMap()
)
;
// addEmbedded() creates an embedded mapping equivalent to:
new EmbeddedMapping(new ArrayReference('name'), (new MapBuilder())
->add('first_name', 'fname')
->add('last_name', 'lname')
->getMap()
)
(new MapBuilder())
->addResolver('full_name', new FullNameResolver())
;
// addResolver() creates a mapping equivalent to:
new ResolverMapping(new ArrayReference('full_name'), new FullNameResolver())
(new MapBuilder())
->addMapping(new Mapping(new ArrayReference('first_name'), new ArrayReference('fname')))
;
(new MapBuilder())
->add('first_name', 'fname')
->add('last_name', 'lname')
->getMap()
;
// is equivalent to:
new Map([
new Mapping(new ArrayReference('first_name'), new ArrayReference('fname')),
new Mapping(new ArrayReference('last_name'), new ArrayReference('lname'))
]);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.