Raw data mapping to validated objects
Raw data mapping to validated objects
Ideal for validation of POST data, configurations, serialized and any other raw data and automatic mapping
of them to type-safe objects.
📄 Check out our documentation.
💸 If you like Orisai, please make a donation. Thank you!
php
use Orisai\ObjectMapper\MappedObject;
use Orisai\ObjectMapper\Rules\MappedObjectValue;
use Orisai\ObjectMapper\Rules\StringValue;
final class UserInput implements MappedObject
{
#[StringValue(notEmpty: true)]
public string $firstName;
#[StringValue(notEmpty: true)]
public string $lastName;
#[MappedObjectValue(UserAddressInput::class)]
public UserAddressInput $address;
}
php
use Orisai\ObjectMapper\MappedObject;
use Orisai\ObjectMapper\Rules\StringValue;
final class UserAddressInput implements MappedObject
{
#[StringValue(notEmpty: true)]
public string $street;
// ...
}
php
use Orisai\ObjectMapper\MappedObject;
use Orisai\ObjectMapper\Rules\MappedObjectValue;
use Orisai\ObjectMapper\Rules\StringValue;
final class UserInput implements MappedObject
{
/** @StringValue(notEmpty=true) */
public string $firstName;
/** @StringValue(notEmpty=true) */
public string $lastName;
/** @MappedObjectValue(UserAddressInput::class) */
public UserAddressInput $address;
}
php
use Orisai\ObjectMapper\MappedObject;
use Orisai\ObjectMapper\Rules\StringValue;
final class UserAddressInput implements MappedObject
{
/** @StringValue(notEmpty=true) */
public string $street;
// ...
}
php
use Orisai\ObjectMapper\Exception\InvalidData;
use Orisai\ObjectMapper\Printers\ErrorVisualPrinter;
use Orisai\ObjectMapper\Printers\TypeToStringConverter;
use Orisai\ObjectMapper\Processing\DefaultProcessor;
$processor = new DefaultProcessor(/* dependencies */);
$errorPrinter = new ErrorVisualPrinter(new TypeToStringConverter());
$data = [
'firstName' => 'Tony',
'lastName' => 'Stark',
'address' => [
'street' => '10880 Malibu Point',
],
];
try {
$user = $processor->process($data, UserInput::class);
} catch (InvalidData $exception) {
$error = $errorPrinter->printError($exception);
throw new Exception("Validation failed due to following error:\n$error");
}
echo "User name is: {$user->firstName} {$user->lastName}";