@@ -72,68 +72,6 @@ private function now(): ?int
7272 */
7373 public function getClassMetadata (\ReflectionClass $ class , BuildingContext $ context ): ClassMetadata
7474 {
75- if (\PHP_VERSION_ID >= 80400 ) {
76- /** @var ClassMetadata<TArg> */
77- return $ this ->toProxyClassMetadata ($ class , $ context );
78- }
79-
80- /** @var ClassMetadata<TArg> */
81- return $ this ->toLazyInitializedClassMetadata ($ class , $ context );
82- }
83-
84- /**
85- * @template TArg of object
86- *
87- * @param \ReflectionClass<TArg> $class
88- *
89- * @return ClassMetadata<TArg>
90- * @throws \Throwable
91- */
92- private function toProxyClassMetadata (\ReflectionClass $ class , BuildingContext $ context ): ClassMetadata
93- {
94- /** @var ClassMetadata<TArg> */
95- return $ this ->metadata [$ class ->name ] ??=
96- (new \ReflectionClass (ClassMetadata::class))
97- ->newLazyProxy (function () use ($ class , $ context ): ClassMetadata {
98- $ info = $ this ->reader ->read ($ class );
99-
100- $ metadata = new ClassMetadata (
101- name: $ info ->name ,
102- properties: $ this ->toPropertiesMetadata (
103- class: $ class ,
104- parent: $ info ,
105- properties: $ info ->properties ,
106- context: $ context ,
107- ),
108- discriminator: $ this ->toOptionalDiscriminator (
109- class: $ class ,
110- parent: $ info ,
111- info: $ info ->discriminator ,
112- context: $ context ,
113- ),
114- isNormalizeAsArray: $ info ->isNormalizeAsArray ,
115- typeErrorMessage: $ info ->typeErrorMessage ,
116- createdAt: $ this ->now (),
117- );
118-
119- unset($ this ->metadata [$ class ->name ]);
120-
121- return $ metadata ;
122- });
123- }
124-
125- /**
126- * @template TArg of object
127- *
128- * @param \ReflectionClass<TArg> $class
129- *
130- * @return ClassMetadata<TArg>
131- * @throws \Throwable
132- */
133- private function toLazyInitializedClassMetadata (
134- \ReflectionClass $ class ,
135- BuildingContext $ context
136- ): ClassMetadata {
13775 if (isset ($ this ->metadata [$ class ->name ])) {
13876 /** @var ClassMetadata<TArg> */
13977 return $ this ->metadata [$ class ->name ];
0 commit comments