22
33require dirname (__FILE__ ) . '/../vendor/autoload.php ' ;
44
5- // Create Logger
6- $ logger = new class extends \Psr \Log \NullLogger {
7- public function debug (\Stringable |string $ message , array $ context = []): void
8- {
9- print_r ("$ message \r\n" );
10- }
11- };
12-
13- // Create default class generator facade
5+ /**
6+ * Create default class generator facade
7+ */
148$ classGenerator = new \Micro \Library \DTO \ClassGeneratorFacadeDefault (
159 ['./example.xml ' ],
1610 './out ' ,
1711 'Transfer ' ,
1812 'Transfer ' ,
19- $ logger
2013);
2114
2215$ classGenerator ->generate ();
2316
24- // Require generated classes
17+ /**
18+ * Require generated classes
19+ */
2520require_once 'out/Simple/SimpleObjectTransfer.php ' ;
2621require_once 'out/Simple/SimpleUserTransfer.php ' ;
2722require_once 'out/UserTransfer.php ' ;
2823
24+ use Transfer \UserTransfer ;
25+ use Transfer \Simple \SimpleObjectTransfer ;
26+ use Micro \Library \DTO \SerializerFacadeDefault ;
27+ use Micro \Library \DTO \ValidatorFacadeDefault ;
28+ use Transfer \Simple \SimpleUserTransfer ;
2929
30- $ user = new \Transfer \UserTransfer ();
30+ /**
31+ * Iterate DTO values
32+ */
33+ $ user = new UserTransfer ();
3134$ user
3235 ->setFirstName ('Stas ' )
3336 ->setUsername ('Asisyas ' )
3437 ->setUpdatedAt (new DateTime ('11.08.1989 ' ))
3538 ->setBooks (
3639 [
37- (new Transfer \ Simple \ SimpleObjectTransfer ())
40+ (new SimpleObjectTransfer ())
3841 ->setHeight (1 )
3942 ->setWeight (20 )
4043 ->setParent (
41- (new Transfer \ Simple \ SimpleObjectTransfer ())
44+ (new SimpleObjectTransfer ())
4245 ->setHeight (100 )
4346 ->setWeight (2000 )
4447 )
4548 ])
4649 ->setSomeclass (
47- (new \ Transfer \ Simple \ SimpleObjectTransfer ())
50+ (new SimpleObjectTransfer ())
4851 ->setWeight (1 )
4952 ->setHeight (2 )
5053 )
5154;
5255
53- // Iterate as array
5456foreach ($ user as $ key => $ value ) {
55- // print_r("\r\nPROPERTY: " . $key . " ==== " . (is_scalar($value) ? $value : serialize($value)));
57+ print_r ("\r\nPROPERTY: " . $ key . " ==== " . (is_scalar ($ value ) ? $ value : serialize ($ value )));
5658}
5759
58- //
59- //print_r('FISRT BOOK HEIGHT : ' . $user['books'][0]['height'] . "\r\n");
60- //print_r('FISRT BOOK PARENT HEIGHT : ' . $user['books'][0]['parent']['height'] . "\r\n");
6160
61+ /**
62+ * Array access example
63+ */
64+ print_r ("\r\n\r\nFISRT BOOK HEIGHT : " . $ user ['books ' ][0 ]['height ' ] . "\r\n" );
65+ print_r ('FISRT BOOK PARENT HEIGHT : ' . $ user ['books ' ][0 ]['parent ' ]['height ' ] . "\r\n\r\n" );
66+ // Allowed too
67+ $ user ['books ' ][0 ]['height ' ] = 12 ;
6268
63- $ classSerializerFacade = new \Micro \Library \DTO \SerializerFacadeDefault ();
69+ /**
70+ * Serialization example
71+ */
72+ $ classSerializerFacade = new SerializerFacadeDefault ();
73+ $ jsonDto = $ classSerializerFacade ->toJsonTransfer ($ user );
74+ $ json = $ classSerializerFacade ->toJson ($ user );
6475
76+ print_r ('Serialized DTO: ' . $ jsonDto . "\r\n\r\n" );
77+ print_r ('Serialize DTO as JSON: ' . $ json . "\r\n\r\n" );
6578
66- $ json = $ classSerializerFacade ->toJsonTransfer ( $ user );
79+ $ deserialized = $ classSerializerFacade ->fromJsonTransfer ( $ jsonDto );
6780
68- //dump($json);
81+ $ className = get_class ($ user );
82+ $ okNo = get_class ($ deserialized ) === $ className ?'true ' : 'false ' ;
83+ print_r ( "Deserialize $ className: $ okNo \r\n" );
6984
70- $ result = $ classSerializerFacade ->fromJsonTransfer ($ json );
71-
72- $ mf = new \Symfony \Component \Validator \Mapping \Factory \LazyLoadingMetadataFactory (new \Symfony \Component \Validator \Mapping \Loader \AnnotationLoader ());
73-
74- $ vb = \Symfony \Component \Validator \Validation::createValidatorBuilder ();
75- $ vb ->setMetadataFactory ($ mf );
76- $ vb ->disableAnnotationMapping ();
77- $ validator = $ vb ->getValidator ();
78-
79- $ simpleUserParent = new \Transfer \Simple \SimpleObjectTransfer ();
85+ /**
86+ * Validate DTO example
87+ */
88+ $ simpleUserParent = new SimpleObjectTransfer ();
8089$ simpleUserParent
8190 ->setWeight (9 )
8291 ->setHeight (8 );
8392
84- $ simpleUser = new \ Transfer \ Simple \ SimpleUserTransfer ();
93+ $ simpleUser = new SimpleUserTransfer ();
8594$ simpleUser
8695 ->setParent ($ simpleUserParent )
8796 ->setIp ('192.168.0.1 ' )
@@ -105,10 +114,10 @@ public function debug(\Stringable|string $message, array $context = []): void
105114 ->setIsin ('US0378331005 ' )
106115;
107116
117+ $ validator = new ValidatorFacadeDefault ();
108118$ constraints = $ validator ->validate ($ simpleUser );
109119
110- dump ($ constraints );
111-
112- //dump($result);
120+ $ validationStatus = !count ($ constraints ) ? 'Validated ' : 'Validation error ' ;
113121
122+ print_r ("Validation status: $ validationStatus \r\n" );
114123
0 commit comments