[] (https://github.com/ThrusterIO/data-mapper/releases) [] (LICENSE) [] (https://travis-ci.org/ThrusterIO/data-mapper) [] (https://scrutinizer-ci.com/g/ThrusterIO/data-mapper) [] (https://scrutinizer-ci.com/g/ThrusterIO/data-mapper) [] (https://packagist.org/packages/thruster/data-mapper)
The Thruster DataMapper Component. Provides fast and efficient way to map data from one format to another.
Via Composer
$ composer require thruster/data-mapper
For older PHP version than PHP7 there is branch php5
$ composer require thruster/data-mapper ">=1.0,<2.0"
class SimpleMapper extends BaseDataMapper {
/**
* @param Request $input
*/
public function map($input)
{
return [
'id' => $input->getId(),
'name' => $input->getName()
];
}
}
$dataMappers = new DataMappers();
$dataMappers->addMapper(new SimpleMapper());
$dataMappers->getMapper(SimpleMapper::class)->map($input);
class ItemMapper extends BaseDataMapper {
/**
* @param Request $input
*/
public function map($input)
{
return [
'id' => $input->getId(),
'name' => $input->getName()
];
}
}
class MainMapper extends BaseDataMapper {
/**
* @param Request $input
*/
public function map($input)
{
return [
'id' => $input->getId(),
'name' => $input->getName(),
'items' => $this->getMapper(ItemMapper::class)->mapCollection($input->getItems())
];
}
}
$dataMappers = new DataMappers();
$dataMappers->addMapper(new MainMapper());
$dataMappers->addMapper(new ItemMapper());
$dataMappers->getMapper(MainMapper::class)->map($input);
class UserRegistrationMapper extends BaseDataMapper implements ValidateableDataMapperInterface {
/**
* @param Request $input
*/
public function map($input)
{
$user = new User();
$user->setUsername($input->get('username'));
$user->setPassword($input->get('password'));
}
public function supports($input) : bool
{
return ($input instanceof Request);
}
public function getValidationGroups($input) : array
{
return ['full'];
}
}
$dataMappers = new DataMappers();
$dataMappers->setValidator(Validation::createValidator());
$dataMappers->addMapper(new UserRegistrationMapper());
$dataMappers->getMapper(UserRegistrationMapper::class)->map($input);
$simpleMapper = new DataMapper(
new class extends BaseDataMapper {
/**
* @param Request $input
*/
public function map($input)
{
return [
'id' => $input->getId(),
'name' => $input->getName()
];
}
public function supports($input) : bool
{
return true;
}
}
);
$simpleMapper->map($input);
$ composer test
Please see CONTRIBUTING and CONDUCT for details.
Please see License File for more information.