Skip to content

Commit

Permalink
porting Optimize compiled factory definitions for php-di v7
Browse files Browse the repository at this point in the history
  • Loading branch information
partikus committed Jan 11, 2024
1 parent 67125ae commit 9417366
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions src/Compiler/Compiler.php
Original file line number Diff line number Diff line change
Expand Up @@ -295,9 +295,7 @@ private function compileDefinition(string $entryName, Definition $definition) :
$defaultParameters
);

$definitionParameters = array_map(function ($value) {
return $this->compileValue($value);
}, $resolvedParameters);
$definitionParameters = array_map(fn ($value) => $this->compileValue($value), $resolvedParameters);

$code = sprintf(
'return (%s)(%s);',
Expand Down Expand Up @@ -446,7 +444,7 @@ public function resolveFactoryParameters(
array $definitionParameters = [],
array $parametersByClassName = [],
array $defaultParameters = []
) {
) : array {
$resolvedParameters = [];
$parameters = $reflection->getParameters();

Expand All @@ -457,19 +455,20 @@ public function resolveFactoryParameters(
continue;
}

$parameterClass = $parameter->getClass();
if (!$parameterClass) {
$parameterType = $parameter->getType();
if (!$parameterType) {
if (array_key_exists($index, $defaultParameters)) {
// take default parameters, when no typehint
$resolvedParameters[$index] = $defaultParameters[$index];
}
continue;
}

if (isset($parametersByClassName[$parameterClass->name])) {
$resolvedParameters[$index] = $parametersByClassName[$parameterClass->name];
$parameterTypeName = $parameterType->getName();
if (isset($parametersByClassName[$parameterTypeName])) {
$resolvedParameters[$index] = $parametersByClassName[$parameterTypeName];
} else {
$resolvedParameters[$index] = new Reference($parameterClass->name);
$resolvedParameters[$index] = new Reference($parameterTypeName);
}
}

Expand Down

0 comments on commit 9417366

Please sign in to comment.