orisai / object-mapper
Raw data mapping to validated objects
Installs: 30 448
Dependents: 18
Suggesters: 0
Security: 0
Stars: 10
Watchers: 2
Forks: 1
Open Issues: 19
Requires
- php: 7.4 - 8.3
- ext-mbstring: *
- benmorel/weakmap-polyfill: ^0.3.0|^0.4.0
- nette/robot-loader: ^3.4.0|^4.0.0
- nette/utils: ^3.1.0|^4.0.0
- orisai/exceptions: ^1.0.0
- orisai/object-mapper-contracts: ^1.0.0
- orisai/reflection-meta: ^1.0.0
- orisai/source-map: ^1.0.0
- orisai/utils: ^1.0.0
- symfony/polyfill-php80: ^1.27.0
Requires (Dev)
- brianium/paratest: ^6.3.0
- doctrine/annotations: ^1.12.1|^2.0.0
- infection/infection: ^0.26.0|^0.27.0|^0.28.0|^0.29.0
- orisai/coding-standard: ^3.0.0
- phpbench/phpbench: ^1.0.0
- phpstan/extension-installer: ^1.0.0
- phpstan/phpstan: ^1.0.0
- phpstan/phpstan-deprecation-rules: ^1.0.0
- phpstan/phpstan-nette: ^1.0.0
- phpstan/phpstan-phpunit: ^1.0.0
- phpstan/phpstan-strict-rules: ^1.0.0
- phpunit/phpunit: ^9.5.0
- staabm/annotate-pull-request-from-checkstyle: ^1.7.0
This package is auto-updated.
Last update: 2024-10-21 23:01:20 UTC
README
Object Mapper
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!
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\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}";