Skip to content

Commit 9669403

Browse files
fixed uses deprecated getClass function
1 parent 2fd54c2 commit 9669403

File tree

10 files changed

+198
-21
lines changed

10 files changed

+198
-21
lines changed

dev/tests/static/framework/Magento/CodeMessDetector/Rule/Design/CookieAndSessionMisuse.php

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
use PHPMD\AbstractRule;
1414
use PHPMD\Node\ClassNode;
1515
use PHPMD\Rule\ClassAware;
16+
use ReflectionClass;
17+
use ReflectionException;
18+
use ReflectionParameter;
1619

1720
/**
1821
* Session and Cookies must be used only in HTML Presentation layer.
@@ -105,7 +108,8 @@ private function isControllerPlugin(\ReflectionClass $class): bool
105108
foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
106109
if (preg_match('/^(after|around|before).+/i', $method->getName())) {
107110
try {
108-
$argument = $method->getParameters()[0]->getClass();
111+
$parameter = $method->getParameters()[0];
112+
$argument = $this->getParameterClass($parameter);
109113
} catch (\Throwable $exception) {
110114
//Non-existing class (autogenerated perhaps) or doesn't have an argument.
111115
continue;
@@ -134,7 +138,8 @@ private function isBlockPlugin(\ReflectionClass $class): bool
134138
foreach ($class->getMethods(\ReflectionMethod::IS_PUBLIC) as $method) {
135139
if (preg_match('/^(after|around|before).+/i', $method->getName())) {
136140
try {
137-
$argument = $method->getParameters()[0]->getClass();
141+
$parameter = $method->getParameters()[0];
142+
$argument = $this->getParameterClass($parameter);
138143
} catch (\Throwable $exception) {
139144
//Non-existing class (autogenerated perhaps) or doesn't have an argument.
140145
continue;
@@ -164,7 +169,7 @@ private function doesUseRestrictedClasses(\ReflectionClass $class): bool
164169
if ($constructor) {
165170
foreach ($constructor->getParameters() as $argument) {
166171
try {
167-
if ($class = $argument->getClass()) {
172+
if ($class = $this->getParameterClass($argument)) {
168173
if ($class->isSubclassOf(\Magento\Framework\Session\SessionManagerInterface::class)
169174
|| $class->getName() === \Magento\Framework\Session\SessionManagerInterface::class
170175
|| $class->isSubclassOf(\Magento\Framework\Stdlib\Cookie\CookieReaderInterface::class)
@@ -183,6 +188,22 @@ private function doesUseRestrictedClasses(\ReflectionClass $class): bool
183188
return false;
184189
}
185190

191+
/**
192+
* Get class by reflection parameter
193+
*
194+
* @param ReflectionParameter $reflectionParameter
195+
* @return ReflectionClass|null
196+
* @throws ReflectionException
197+
*/
198+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
199+
{
200+
$parameterType = $reflectionParameter->getType();
201+
202+
return $parameterType && !$parameterType->isBuiltin()
203+
? new ReflectionClass($parameterType->getName())
204+
: null;
205+
}
206+
186207
/**
187208
* @inheritdoc
188209
*

dev/tests/static/framework/Magento/TestFramework/Integrity/Library/Injectable.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
use Laminas\Code\Reflection\ClassReflection;
99
use Laminas\Code\Reflection\FileReflection;
1010
use Laminas\Code\Reflection\ParameterReflection;
11+
use ReflectionClass;
12+
use ReflectionException;
13+
use ReflectionParameter;
1114

1215
/**
1316
* Provide dependencies for the file
@@ -39,7 +42,7 @@ public function getDependencies(FileReflection $fileReflection)
3942
foreach ($method->getParameters() as $parameter) {
4043
try {
4144
/** @var ParameterReflection $parameter */
42-
$dependency = $parameter->getClass();
45+
$dependency = $this->getParameterClass($parameter);
4346
if ($dependency instanceof ClassReflection) {
4447
$this->dependencies[] = $dependency->getName();
4548
}
@@ -56,4 +59,20 @@ public function getDependencies(FileReflection $fileReflection)
5659

5760
return $this->dependencies;
5861
}
62+
63+
/**
64+
* Get class by reflection parameter
65+
*
66+
* @param ReflectionParameter $reflectionParameter
67+
* @return ReflectionClass|null
68+
* @throws ReflectionException
69+
*/
70+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
71+
{
72+
$parameterType = $reflectionParameter->getType();
73+
74+
return $parameterType && !$parameterType->isBuiltin()
75+
? new ReflectionClass($parameterType->getName())
76+
: null;
77+
}
5978
}

dev/tests/static/testsuite/Magento/Test/Integrity/PublicCodeTest.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
namespace Magento\Test\Integrity;
77

88
use Magento\Framework\App\Utility\Files;
9+
use ReflectionClass;
10+
use ReflectionException;
11+
use ReflectionParameter;
912

1013
/**
1114
* Tests @api annotated code integrity
@@ -277,7 +280,7 @@ private function checkParameters($class, \ReflectionMethod $method, array $nonPu
277280
&& !$parameter->getType()->isBuiltin()
278281
&& !$this->isGenerated($parameter->getType()->getName())
279282
) {
280-
$parameterClass = $parameter->getClass();
283+
$parameterClass = $this->getParameterClass($parameter);
281284
/*
282285
* We don't want to check integrity of @api coverage of classes
283286
* that belong to different vendors, because it is too complicated.
@@ -286,7 +289,7 @@ private function checkParameters($class, \ReflectionMethod $method, array $nonPu
286289
* we don't want to fail test, because Zend is considered public by default,
287290
* and we don't care if Zend classes are @api-annotated
288291
*/
289-
if (!$parameterClass->isInternal()
292+
if ($parameterClass && !$parameterClass->isInternal()
290293
&& $this->areClassesFromSameVendor($parameterClass->getName(), $class)
291294
&& !$this->isPublished($parameterClass)
292295
) {
@@ -296,4 +299,20 @@ private function checkParameters($class, \ReflectionMethod $method, array $nonPu
296299
}
297300
return $nonPublishedClasses;
298301
}
302+
303+
/**
304+
* Get class by reflection parameter
305+
*
306+
* @param ReflectionParameter $reflectionParameter
307+
* @return ReflectionClass|null
308+
* @throws ReflectionException
309+
*/
310+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
311+
{
312+
$parameterType = $reflectionParameter->getType();
313+
314+
return $parameterType && !$parameterType->isBuiltin()
315+
? new ReflectionClass($parameterType->getName())
316+
: null;
317+
}
299318
}

lib/internal/Magento/Framework/Code/Generator/EntityAbstract.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
namespace Magento\Framework\Code\Generator;
77

88
use Laminas\Code\Generator\ValueGenerator;
9+
use ReflectionClass;
10+
use ReflectionException;
11+
use ReflectionParameter;
912

1013
/**
1114
* Abstract entity
@@ -328,9 +331,9 @@ private function extractParameterType(
328331
if ($parameter->hasType()) {
329332
if ($parameter->isArray()) {
330333
$typeName = 'array';
331-
} elseif ($parameter->getClass()) {
334+
} elseif ($parameterClass = $this->getParameterClass($parameter)) {
332335
$typeName = $this->_getFullyQualifiedClassName(
333-
$parameter->getClass()->getName()
336+
$parameterClass->getName()
334337
);
335338
} elseif ($parameter->isCallable()) {
336339
$typeName = 'callable';
@@ -346,6 +349,22 @@ private function extractParameterType(
346349
return $typeName;
347350
}
348351

352+
/**
353+
* Get class by reflection parameter
354+
*
355+
* @param ReflectionParameter $reflectionParameter
356+
* @return ReflectionClass|null
357+
* @throws ReflectionException
358+
*/
359+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
360+
{
361+
$parameterType = $reflectionParameter->getType();
362+
363+
return $parameterType && !$parameterType->isBuiltin()
364+
? new ReflectionClass($parameterType->getName())
365+
: null;
366+
}
367+
349368
/**
350369
* Extract parameter default value
351370
*

lib/internal/Magento/Framework/Code/Reader/ArgumentsReader.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
*/
66
namespace Magento\Framework\Code\Reader;
77

8+
use ReflectionClass;
9+
use ReflectionException;
10+
use ReflectionParameter;
11+
812
/**
913
* The class arguments reader
1014
*/
@@ -98,8 +102,8 @@ public function getConstructorArguments(\ReflectionClass $class, $groupByPositio
98102
*/
99103
private function processType(\ReflectionClass $class, \Laminas\Code\Reflection\ParameterReflection $parameter)
100104
{
101-
if ($parameter->getClass()) {
102-
return NamespaceResolver::NS_SEPARATOR . $parameter->getClass()->getName();
105+
if ($parameterClass = $this->getParameterClass($parameter)) {
106+
return NamespaceResolver::NS_SEPARATOR . $parameterClass->getName();
103107
}
104108

105109
$type = $parameter->detectType();
@@ -121,6 +125,22 @@ private function processType(\ReflectionClass $class, \Laminas\Code\Reflection\P
121125
return $type;
122126
}
123127

128+
/**
129+
* Get class by reflection parameter
130+
*
131+
* @param ReflectionParameter $reflectionParameter
132+
* @return ReflectionClass|null
133+
* @throws ReflectionException
134+
*/
135+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
136+
{
137+
$parameterType = $reflectionParameter->getType();
138+
139+
return $parameterType && !$parameterType->isBuiltin()
140+
? new ReflectionClass($parameterType->getName())
141+
: null;
142+
}
143+
124144
/**
125145
* Get arguments of parent __construct call
126146
*

lib/internal/Magento/Framework/Code/Reader/ClassReader.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ public function getConstructor($className)
3333
/** @var $parameter ReflectionParameter */
3434
foreach ($constructor->getParameters() as $parameter) {
3535
try {
36+
$parameterClass = $this->getParameterClass($parameter);
37+
3638
$result[] = [
3739
$parameter->getName(),
38-
$this->getParameterClass($parameter),
40+
$parameterClass ? $parameterClass->getName() : null,
3941
!$parameter->isOptional() && !$parameter->isDefaultValueAvailable(),
4042
$this->getReflectionParameterDefaultValue($parameter),
4143
$parameter->isVariadic(),
@@ -56,7 +58,7 @@ public function getConstructor($className)
5658

5759
/**
5860
* Get class by reflection parameter
59-
*
61+
*
6062
* @param ReflectionParameter $reflectionParameter
6163
* @return ReflectionClass|null
6264
* @throws ReflectionException

lib/internal/Magento/Framework/Code/Reader/SourceArgumentsReader.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
*/
66
namespace Magento\Framework\Code\Reader;
77

8+
use ReflectionClass;
9+
use ReflectionException;
10+
use ReflectionParameter;
11+
812
class SourceArgumentsReader
913
{
1014
/**
@@ -61,7 +65,7 @@ public function getConstructorArgumentTypes(
6165
$typeName = 'array';
6266
} else {
6367
try {
64-
$paramClass = $param->getClass();
68+
$paramClass = $this->getParameterClass($param);
6569
if ($paramClass) {
6670
$typeName = '\\' .$paramClass->getName();
6771
}
@@ -81,6 +85,22 @@ public function getConstructorArgumentTypes(
8185
return $types;
8286
}
8387

88+
/**
89+
* Get class by reflection parameter
90+
*
91+
* @param ReflectionParameter $reflectionParameter
92+
* @return ReflectionClass|null
93+
* @throws ReflectionException
94+
*/
95+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
96+
{
97+
$parameterType = $reflectionParameter->getType();
98+
99+
return $parameterType && !$parameterType->isBuiltin()
100+
? new ReflectionClass($parameterType->getName())
101+
: null;
102+
}
103+
84104
/**
85105
* Perform namespace resolution if required and return fully qualified name.
86106
*

lib/internal/Magento/Framework/Interception/Code/InterfaceValidator.php

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
use Magento\Framework\Code\Reader\ArgumentsReader;
99
use Magento\Framework\Exception\ValidatorException;
1010
use Magento\Framework\Phrase;
11+
use ReflectionClass;
12+
use ReflectionException;
13+
use ReflectionParameter;
1114

1215
/**
1316
* @SuppressWarnings(PHPMD.NPathComplexity)
@@ -162,16 +165,32 @@ protected function validateMethodsParameters(array $pluginParameters, array $ori
162165
/**
163166
* Get parameters type
164167
*
165-
* @param \ReflectionParameter $parameter
168+
* @param ReflectionParameter $parameter
166169
*
167170
* @return string
168171
*/
169-
protected function getParametersType(\ReflectionParameter $parameter)
172+
protected function getParametersType(ReflectionParameter $parameter)
170173
{
171-
$parameterClass = $parameter->getClass();
174+
$parameterClass = $this->getParameterClass($parameter);
172175
return $parameterClass ? '\\' . $parameterClass->getName() : ($parameter->isArray() ? 'array' : null);
173176
}
174177

178+
/**
179+
* Get class by reflection parameter
180+
*
181+
* @param ReflectionParameter $reflectionParameter
182+
* @return ReflectionClass|null
183+
* @throws ReflectionException
184+
*/
185+
private function getParameterClass(ReflectionParameter $reflectionParameter): ?ReflectionClass
186+
{
187+
$parameterType = $reflectionParameter->getType();
188+
189+
return $parameterType && !$parameterType->isBuiltin()
190+
? new ReflectionClass($parameterType->getName())
191+
: null;
192+
}
193+
175194
/**
176195
* Get intercepted method name
177196
*

0 commit comments

Comments
 (0)