Skip to content

Commit 34cb6b6

Browse files
author
Stanislav Idolov
committed
MAGETWO-67444: Ensure all tools support PHP 7 type hinting required by Technical Guidelines
1 parent aa4ae30 commit 34cb6b6

File tree

19 files changed

+307
-112
lines changed

19 files changed

+307
-112
lines changed

app/code/Magento/Cms/Model/ResourceModel/Block/Grid/Collection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class Collection extends BlockCollection implements SearchResultInterface
3131
* @param string $eventObject
3232
* @param string $resourceModel
3333
* @param string $model
34-
* @param string|null $connection
34+
* @param \Magento\Framework\DB\Adapter\AdapterInterface|string|null $connection
3535
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource
3636
*
3737
* @SuppressWarnings(PHPMD.ExcessiveParameterList)

app/code/Magento/Cms/Model/ResourceModel/Page/Grid/Collection.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Collection extends PageCollection implements SearchResultInterface
2828
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
2929
* @param \Magento\Framework\EntityManager\MetadataPool $metadataPool
3030
* @param mixed|null $mainTable
31-
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $eventPrefix
31+
* @param string $eventPrefix
3232
* @param mixed $eventObject
3333
* @param mixed $resourceModel
3434
* @param string $model

app/code/Magento/Eav/Model/Entity/Attribute/Frontend/AbstractFrontend.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ abstract class AbstractFrontend implements \Magento\Eav\Model\Entity\Attribute\F
6666
/**
6767
* @param BooleanFactory $attrBooleanFactory
6868
* @param CacheInterface $cache
69-
* @param $storeResolver @deprecated
69+
* @param null $storeResolver @deprecated
7070
* @param array $cacheTags
7171
* @param StoreManagerInterface $storeManager
7272
* @param Serializer $serializer

app/code/Magento/Quote/Model/Quote/Address/Total/Collector.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class Collector extends \Magento\Sales\Model\Config\Ordered
6969
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
7070
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
7171
* @param \Magento\Quote\Model\Quote\Address\TotalFactory $totalFactory
72-
* @param mixed $sourceData
72+
* @param \Magento\Framework\Simplexml\Element|mixed $sourceData
7373
* @param mixed $store
7474
* @param SerializerInterface $serializer
7575
*/

app/code/Magento/Sales/Model/Order/Creditmemo/Item/Validation/CreationQuantityValidator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class CreationQuantityValidator implements ValidatorInterface
3131
/**
3232
* ItemCreationQuantityValidator constructor.
3333
* @param OrderItemRepositoryInterface $orderItemRepository
34-
* @param object $context
34+
* @param mixed $context
3535
*/
3636
public function __construct(OrderItemRepositoryInterface $orderItemRepository, $context = null)
3737
{

app/code/Magento/Sales/Model/Order/Total/Config/Base.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class Base extends \Magento\Sales\Model\Config\Ordered
4343
* @param \Psr\Log\LoggerInterface $logger
4444
* @param \Magento\Sales\Model\Config $salesConfig
4545
* @param \Magento\Sales\Model\Order\TotalFactory $orderTotalFactory
46-
* @param mixed $sourceData
46+
* @param \Magento\Framework\Simplexml\Element|mixed $sourceData
4747
* @param SerializerInterface $serializer
4848
*/
4949
public function __construct(

app/code/Magento/Sales/Model/ResourceModel/Grid/Collection.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ class Collection extends AbstractCollection implements SearchResultInterface
2727
* @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
2828
* @param \Magento\Framework\Event\ManagerInterface $eventManager
2929
* @param null|\Zend_Db_Adapter_Abstract $mainTable
30-
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $eventPrefix
30+
* @param string $eventPrefix
3131
* @param string $eventObject
3232
* @param string $resourceModel
3333
* @param string $model
34-
* @param string|null $connection
34+
* @param \Magento\Framework\DB\Adapter\AdapterInterface|string|null $connection
3535
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource
3636
*
3737
* @SuppressWarnings(PHPMD.ExcessiveParameterList)

lib/internal/Magento/Framework/App/Config/Base.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Base extends \Magento\Framework\Simplexml\Config
1818
public static $instances = [];
1919

2020
/**
21-
* @param string|\Magento\Framework\Simplexml\Element $sourceData $sourceData
21+
* @param \Magento\Framework\Simplexml\Element|string $sourceData $sourceData
2222
*/
2323
public function __construct($sourceData = null)
2424
{

lib/internal/Magento/Framework/App/Request/Http.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class Http extends Request implements RequestContentInterface, RequestSafetyInte
100100
* @param ConfigInterface $routeConfig
101101
* @param PathInfoProcessorInterface $pathInfoProcessor
102102
* @param ObjectManagerInterface $objectManager
103-
* @param string|null $uri
103+
* @param \Zend\Uri\UriInterface|string|null $uri
104104
* @param array $directFrontNames
105105
*/
106106
public function __construct(

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

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,28 @@ class ArgumentsReader
99
{
1010
const NO_DEFAULT_VALUE = 'NO-DEFAULT';
1111

12+
/**
13+
* @var NamespaceResolver
14+
*/
15+
private $namespaceResolver;
16+
17+
/**
18+
* @var ScalarTypesProvider
19+
*/
20+
private $scalarTypesProvider;
21+
22+
/**
23+
* @param NamespaceResolver|null $namespaceResolver
24+
* @param ScalarTypesProvider|null $scalarTypesProvider
25+
*/
26+
public function __construct(
27+
NamespaceResolver $namespaceResolver = null,
28+
ScalarTypesProvider $scalarTypesProvider = null
29+
) {
30+
$this->namespaceResolver = $namespaceResolver ?: new NamespaceResolver();
31+
$this->scalarTypesProvider = $scalarTypesProvider ?: new ScalarTypesProvider();
32+
}
33+
1234
/**
1335
* Get class constructor
1436
*
@@ -32,11 +54,10 @@ public function getConstructorArguments(\ReflectionClass $class, $groupByPositio
3254
return $output;
3355
}
3456

35-
foreach ($class->getConstructor()->getParameters() as $parameter) {
57+
$constructor = new \Zend\Code\Reflection\MethodReflection($class->getName(), '__construct');
58+
foreach ($constructor->getParameters() as $parameter) {
3659
$name = $parameter->getName();
3760
$position = $parameter->getPosition();
38-
$parameterClass = $parameter->getClass();
39-
$type = $parameterClass ? '\\' . $parameterClass->getName() : ($parameter->isArray() ? 'array' : null);
4061
$index = $groupByPosition ? $position : $name;
4162
$default = null;
4263
if ($parameter->isOptional()) {
@@ -57,14 +78,46 @@ public function getConstructorArguments(\ReflectionClass $class, $groupByPositio
5778
$output[$index] = [
5879
'name' => $name,
5980
'position' => $position,
60-
'type' => $type,
81+
'type' => $this->processType($class, $parameter),
6182
'isOptional' => $parameter->isOptional(),
6283
'default' => $default,
6384
];
6485
}
6586
return $output;
6687
}
6788

89+
/**
90+
* Process argument type.
91+
*
92+
* @param \ReflectionClass $class
93+
* @param \Zend\Code\Reflection\ParameterReflection $parameter
94+
* @return string
95+
*/
96+
private function processType(\ReflectionClass $class, \Zend\Code\Reflection\ParameterReflection $parameter)
97+
{
98+
if ($parameter->getClass()) {
99+
return NamespaceResolver::NS_SEPARATOR . $parameter->getClass()->getName();
100+
}
101+
102+
$type = $parameter->detectType();
103+
104+
if ($type === 'null') {
105+
return null;
106+
}
107+
108+
if (strpos($type, '[]')) {
109+
return 'array';
110+
}
111+
112+
if (!in_array($type, $this->scalarTypesProvider->getTypes())) {
113+
$availableNamespaces = $this->namespaceResolver->getImportedNamespaces(file($class->getFileName()));
114+
$availableNamespaces[0] = $class->getNamespaceName();
115+
return $this->namespaceResolver->resolveNamespace($type, $availableNamespaces);
116+
}
117+
118+
return $type;
119+
}
120+
68121
/**
69122
* Get arguments of parent __construct call
70123
*
@@ -151,6 +204,10 @@ public function isCompatibleType($requiredType, $actualType)
151204
return false;
152205
}
153206

207+
if ($requiredType === 'mixed' || $actualType === 'mixed') {
208+
return true;
209+
}
210+
154211
return is_subclass_of($actualType, $requiredType);
155212
}
156213

0 commit comments

Comments
 (0)