项目作者: orisai

项目描述 :
Raw data mapping to validated objects
高级语言: PHP
项目地址: git://github.com/orisai/object-mapper.git
创建时间: 2020-08-01T18:53:59Z
项目社区:https://github.com/orisai/object-mapper

开源协议:Mozilla Public License 2.0

下载



Orisai


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!







#


Attributes definition

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; // ... }

Annotations definition

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; // ... }

Processing

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}";