fix(di): Improve parameter resolution and validation
This commit is contained in:
@@ -118,7 +118,7 @@ class Synapsis
|
|||||||
$reflectionClass = new ReflectionClass($className);
|
$reflectionClass = new ReflectionClass($className);
|
||||||
$constructor = $reflectionClass->getConstructor();
|
$constructor = $reflectionClass->getConstructor();
|
||||||
static::$instances[$className] = new $className(
|
static::$instances[$className] = new $className(
|
||||||
...static::resolveParameterValues($constructor->getParameters())
|
...static::resolveParameterValues($constructor?->getParameters() ?? [])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,13 +141,17 @@ class Synapsis
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Intentamos darle un valor equivalente a nulo si es una clase primitiva pare evitar
|
$paramType = $parameter->getType();
|
||||||
// errores innecesarios, lo
|
if ($paramType === null) {
|
||||||
if ($parameter->getType()->isBuiltin()) {
|
// If no type is declared, and it's not optional, we cannot resolve it.
|
||||||
throw new Exception('Primitive parameters expect at least a default value.');
|
throw new Exception('Untyped parameters expect at least a default value or must be optional.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$values[] = static::resolveInstance($parameter->getType()->getName());
|
if ($paramType->isBuiltin()) {
|
||||||
|
throw new Exception("Primitive parameter '{$parameter->getName()}' expects at least a default value.");
|
||||||
|
}
|
||||||
|
|
||||||
|
$values[] = static::resolveInstance($paramType->getName());
|
||||||
}
|
}
|
||||||
return $values;
|
return $values;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user