forked from magento/magento2-functional-testing-framework
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathClassReader.php
56 lines (53 loc) · 1.74 KB
/
ClassReader.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\FunctionalTestingFramework\System\Code;
/**
* Class ClassReader
*
* @internal
*/
class ClassReader
{
/**
* Read class method signature
*
* @param string $className
* @param string $method
* @return array|null
* @throws \ReflectionException
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function getParameters($className, $method)
{
$class = new \ReflectionClass($className);
$result = null;
$method = $class->getMethod($method);
if ($method) {
$result = [];
/** @var $parameter \ReflectionParameter */
foreach ($method->getParameters() as $parameter) {
try {
$paramType = $parameter->getType();
$name = ($paramType && method_exists($paramType, 'isBuiltin') && !$paramType->isBuiltin())
? new \ReflectionClass($paramType->getName())
: null;
$result[$parameter->getName()] = [
$parameter->getName(),
$name !== null ? $name->getName() : null,
!$parameter->isOptional(),
$parameter->isOptional() ?
$parameter->isDefaultValueAvailable() ? $parameter->getDefaultValue() : null :
null
];
} catch (\ReflectionException $e) {
$message = $e->getMessage();
throw new \ReflectionException($message, 0, $e);
}
}
}
return $result;
}
}