Skip to content

Commit 2c70d32

Browse files
committed
php8-mod: Optimize compiled factory definitions
1 parent 48bf3bb commit 2c70d32

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

src/Compiler/Compiler.php

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
use function file_put_contents;
2424
use InvalidArgumentException;
2525
use Laravel\SerializableClosure\Support\ReflectionClosure;
26+
use ReflectionFunction;
27+
use ReflectionFunctionAbstract;
2628
use function rename;
2729
use function sprintf;
2830
use function tempnam;
2931
use function unlink;
30-
use ReflectionFunction;
31-
use ReflectionFunctionAbstract;
3232

3333
/**
3434
* Compiles the container into PHP code much more optimized for performances.
@@ -294,9 +294,7 @@ private function compileDefinition(string $entryName, Definition $definition) :
294294
$defaultParameters
295295
);
296296

297-
$definitionParameters = array_map(function ($value) {
298-
return $this->compileValue($value);
299-
}, $resolvedParameters);
297+
$definitionParameters = array_map(fn ($value) => $this->compileValue($value), $resolvedParameters);
300298

301299
$code = sprintf(
302300
'return (%s)(%s);',
@@ -440,7 +438,7 @@ public function resolveFactoryParameters(
440438
array $definitionParameters = [],
441439
array $parametersByClassName = [],
442440
array $defaultParameters = []
443-
) {
441+
) : array {
444442
$resolvedParameters = [];
445443
$parameters = $reflection->getParameters();
446444

@@ -451,19 +449,20 @@ public function resolveFactoryParameters(
451449
continue;
452450
}
453451

454-
$parameterClass = $parameter->getClass();
455-
if (!$parameterClass) {
452+
$parameterType = $parameter->getType();
453+
if (!$parameterType) {
456454
if (array_key_exists($index, $defaultParameters)) {
457455
// take default parameters, when no typehint
458456
$resolvedParameters[$index] = $defaultParameters[$index];
459457
}
460458
continue;
461459
}
462460

463-
if (isset($parametersByClassName[$parameterClass->name])) {
464-
$resolvedParameters[$index] = $parametersByClassName[$parameterClass->name];
461+
$parameterTypeName = $parameterType->getName();
462+
if (isset($parametersByClassName[$parameterTypeName])) {
463+
$resolvedParameters[$index] = $parametersByClassName[$parameterTypeName];
465464
} else {
466-
$resolvedParameters[$index] = new Reference($parameterClass->name);
465+
$resolvedParameters[$index] = new Reference($parameterTypeName);
467466
}
468467
}
469468

0 commit comments

Comments
 (0)