Skip to content

Commit 98dfa02

Browse files
author
Volodymyr Kublytskyi
committed
MAGETWO-53713: [GITHUB] The time has come for splat operator #4766
2 parents 04795a6 + 93af3a1 commit 98dfa02

File tree

2 files changed

+34
-151
lines changed

2 files changed

+34
-151
lines changed

Diff for: lib/internal/Magento/Framework/ObjectManager/Factory/AbstractFactory.php

+1-113
Original file line numberDiff line numberDiff line change
@@ -86,123 +86,11 @@ public function setArguments($arguments)
8686
* @param array $args
8787
*
8888
* @return object
89-
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
90-
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
9189
*
9290
*/
9391
protected function createObject($type, $args)
9492
{
95-
switch (count($args)) {
96-
case 0:
97-
return new $type();
98-
case 1:
99-
return new $type($args[0]);
100-
case 2:
101-
return new $type($args[0], $args[1]);
102-
case 3:
103-
return new $type($args[0], $args[1], $args[2]);
104-
case 4:
105-
return new $type($args[0], $args[1], $args[2], $args[3]);
106-
case 5:
107-
return new $type($args[0], $args[1], $args[2], $args[3], $args[4]);
108-
case 6:
109-
return new $type($args[0], $args[1], $args[2], $args[3], $args[4], $args[5]);
110-
case 7:
111-
return new $type($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6]);
112-
case 8:
113-
return new $type($args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7]);
114-
case 9:
115-
return new $type(
116-
$args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8]
117-
);
118-
case 10:
119-
return new $type(
120-
$args[0], $args[1], $args[2], $args[3], $args[4], $args[5], $args[6], $args[7], $args[8], $args[9]
121-
);
122-
case 11:
123-
return new $type(
124-
$args[0],
125-
$args[1],
126-
$args[2],
127-
$args[3],
128-
$args[4],
129-
$args[5],
130-
$args[6],
131-
$args[7],
132-
$args[8],
133-
$args[9],
134-
$args[10]
135-
);
136-
case 12:
137-
return new $type(
138-
$args[0],
139-
$args[1],
140-
$args[2],
141-
$args[3],
142-
$args[4],
143-
$args[5],
144-
$args[6],
145-
$args[7],
146-
$args[8],
147-
$args[9],
148-
$args[10],
149-
$args[11]
150-
);
151-
case 13:
152-
return new $type(
153-
$args[0],
154-
$args[1],
155-
$args[2],
156-
$args[3],
157-
$args[4],
158-
$args[5],
159-
$args[6],
160-
$args[7],
161-
$args[8],
162-
$args[9],
163-
$args[10],
164-
$args[11],
165-
$args[12]
166-
);
167-
case 14:
168-
return new $type(
169-
$args[0],
170-
$args[1],
171-
$args[2],
172-
$args[3],
173-
$args[4],
174-
$args[5],
175-
$args[6],
176-
$args[7],
177-
$args[8],
178-
$args[9],
179-
$args[10],
180-
$args[11],
181-
$args[12],
182-
$args[13]
183-
);
184-
case 15:
185-
return new $type(
186-
$args[0],
187-
$args[1],
188-
$args[2],
189-
$args[3],
190-
$args[4],
191-
$args[5],
192-
$args[6],
193-
$args[7],
194-
$args[8],
195-
$args[9],
196-
$args[10],
197-
$args[11],
198-
$args[12],
199-
$args[13],
200-
$args[14]
201-
);
202-
default:
203-
$reflection = new \ReflectionClass($type);
204-
return $reflection->newInstanceArgs($args);
205-
}
93+
return new $type(...$args);
20694
}
20795

20896
/**

Diff for: lib/internal/Magento/Framework/TestFramework/Unit/Helper/ObjectManager.php

+33-38
Original file line numberDiff line numberDiff line change
@@ -185,55 +185,50 @@ public function getObject($className, array $arguments = [])
185185
*/
186186
protected function getBuilder($className, array $arguments)
187187
{
188-
$objectFactory = $this->_testObject->getMock('Magento\Framework\Api\ObjectFactory', [], [], '', false);
189-
190188
if (!isset($arguments['objectFactory'])) {
191-
$arguments['objectFactory'] = $objectFactory;
192-
}
189+
$objectFactory = $this->_testObject->getMock('Magento\Framework\Api\ObjectFactory', [], [], '', false);
193190

194-
$constructArguments = $this->getConstructArguments($className, $arguments);
195-
$reflectionClass = new \ReflectionClass($className);
196-
$builderObject = $reflectionClass->newInstanceArgs($constructArguments);
197-
198-
$objectFactory->expects($this->_testObject->any())
199-
->method('populateWithArray')
200-
->will($this->_testObject->returnSelf());
201-
$objectFactory->expects($this->_testObject->any())
202-
->method('populate')
203-
->will($this->_testObject->returnSelf());
204-
$objectFactory->expects($this->_testObject->any())
205-
->method('create')
206-
->will($this->_testObject->returnCallback(
207-
function ($className, $arguments) {
208-
$reflectionClass = new \ReflectionClass($className);
209-
$constructorMethod = $reflectionClass->getConstructor();
210-
$parameters = $constructorMethod->getParameters();
211-
$args = [];
212-
foreach ($parameters as $parameter) {
213-
$parameterName = $parameter->getName();
214-
if (isset($arguments[$parameterName])) {
215-
$args[] = $arguments[$parameterName];
216-
} else {
217-
if ($parameter->isArray()) {
218-
$args[] = [];
219-
} elseif ($parameter->allowsNull()) {
220-
$args[] = null;
191+
$objectFactory->expects($this->_testObject->any())
192+
->method('populateWithArray')
193+
->will($this->_testObject->returnSelf());
194+
$objectFactory->expects($this->_testObject->any())
195+
->method('populate')
196+
->will($this->_testObject->returnSelf());
197+
$objectFactory->expects($this->_testObject->any())
198+
->method('create')
199+
->will($this->_testObject->returnCallback(
200+
function ($className, $arguments) {
201+
$reflectionClass = new \ReflectionClass($className);
202+
$constructorMethod = $reflectionClass->getConstructor();
203+
$parameters = $constructorMethod->getParameters();
204+
$args = [];
205+
foreach ($parameters as $parameter) {
206+
$parameterName = $parameter->getName();
207+
if (isset($arguments[$parameterName])) {
208+
$args[] = $arguments[$parameterName];
221209
} else {
222-
$mock = $this->_getMockWithoutConstructorCall($parameter->getClass()->getName());
223-
$args[] = $mock;
210+
if ($parameter->isArray()) {
211+
$args[] = [];
212+
} elseif ($parameter->allowsNull()) {
213+
$args[] = null;
214+
} else {
215+
$mock = $this->_getMockWithoutConstructorCall($parameter->getClass()->getName());
216+
$args[] = $mock;
217+
}
224218
}
225219
}
220+
return new $className(...$args);
226221
}
222+
));
227223

228-
return $reflectionClass->newInstanceArgs($args);
229-
}
230-
));
224+
$arguments['objectFactory'] = $objectFactory;
225+
}
231226

232-
return $builderObject;
227+
return new $className(...array_values($this->getConstructArguments($className, $arguments)));
233228
}
234229

235230
/**
236-
* Retrieve list of arguments that used for new object instance creation
231+
* Retrieve associative array of arguments that used for new object instance creation
237232
*
238233
* @param string $className
239234
* @param array $arguments

0 commit comments

Comments
 (0)