Skip to content

orisai/nette-object-mapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jan 21, 2025
993b752 Â· Jan 21, 2025

History

26 Commits
Jan 21, 2025
Jun 9, 2023
Jun 9, 2023
Jan 18, 2025
Jan 21, 2025
Jan 21, 2025
Feb 4, 2023
Jun 20, 2024
Feb 4, 2023
Jan 21, 2025
Feb 4, 2023
Jun 20, 2024
Jun 20, 2024
Jan 21, 2025

Repository files navigation

Orisai
Nette Object Mapper

Orisai Object Mapper integration for Nette

📄 Check out our documentation.

💸 If you like Orisai, please make a donation. Thank you!

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;

}
use Orisai\ObjectMapper\MappedObject;
use Orisai\ObjectMapper\Rules\StringValue;

final class UserAddressInput implements MappedObject
{

	/** @StringValue(notEmpty=true) */
	public string $street;

	// ...
}
use Orisai\ObjectMapper\Exception\InvalidData;
use Orisai\ObjectMapper\Printers\ErrorVisualPrinter;
use Orisai\ObjectMapper\Printers\TypeToStringConverter;
use Orisai\ObjectMapper\Processing\Processor;

$processor = $container->getByType(Processor::class);
$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}";